Changeset - f48bce87475b
[Not reviewed]
beta
0 4 0
Marcin Kuzminski - 14 years ago 2012-01-27 23:51:13
marcin@python-works.com
code cleanup
4 files changed with 123 insertions and 134 deletions:
0 comments (0 inline, 0 general)
rhodecode/controllers/admin/repos_groups.py
Show inline comments
 
@@ -115,97 +115,96 @@ class ReposGroupsController(BaseControll
 
        return redirect(url('repos_groups'))
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def new(self, format='html'):
 
        """GET /repos_groups/new: Form to create a new item"""
 
        # url('new_repos_group')
 
        self.__load_defaults()
 
        return render('admin/repos_groups/repos_groups_add.html')
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def update(self, id):
 
        """PUT /repos_groups/id: Update an existing item"""
 
        # Forms posted to this method should contain a hidden field:
 
        #    <input type="hidden" name="_method" value="PUT" />
 
        # Or using helpers:
 
        #    h.form(url('repos_group', id=ID),
 
        #           method='put')
 
        # url('repos_group', id=ID)
 

	
 
        self.__load_defaults()
 
        c.repos_group = RepoGroup.get(id)
 

	
 
        repos_group_form = ReposGroupForm(edit=True,
 
                                          old_data=c.repos_group.get_dict(),
 
                                          available_groups=
 
                                            c.repo_groups_choices)()
 
        try:
 
            form_result = repos_group_form.to_python(dict(request.POST))
 
            ReposGroupModel().update(id, form_result)
 
            Session.commit()
 
            h.flash(_('updated repos group %s') \
 
                    % form_result['group_name'], category='success')
 
            #TODO: in futureaction_logger(, '', '', '', self.sa)
 
        except formencode.Invalid, errors:
 

	
 
            return htmlfill.render(
 
                render('admin/repos_groups/repos_groups_edit.html'),
 
                defaults=errors.value,
 
                errors=errors.error_dict or {},
 
                prefix_error=False,
 
                encoding="UTF-8")
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            h.flash(_('error occurred during update of repos group %s') \
 
                    % request.POST.get('group_name'), category='error')
 

	
 
        return redirect(url('repos_groups'))
 

	
 

	
 
    @HasPermissionAnyDecorator('hg.admin')
 
    def delete(self, id):
 
        """DELETE /repos_groups/id: Delete an existing item"""
 
        # Forms posted to this method should contain a hidden field:
 
        #    <input type="hidden" name="_method" value="DELETE" />
 
        # Or using helpers:
 
        #    h.form(url('repos_group', id=ID),
 
        #           method='delete')
 
        # url('repos_group', id=ID)
 

	
 
        gr = RepoGroup.get(id)
 
        repos = gr.repositories.all()
 
        if repos:
 
            h.flash(_('This group contains %s repositores and cannot be '
 
                      'deleted' % len(repos)),
 
                    category='error')
 
            return redirect(url('repos_groups'))
 

	
 
        try:
 
            ReposGroupModel().delete(id)
 
            Session.commit()
 
            h.flash(_('removed repos group %s' % gr.group_name), category='success')
 
            #TODO: in future action_logger(, '', '', '', self.sa)
 
        except IntegrityError, e:
 
            if e.message.find('groups_group_parent_id_fkey') != -1:
 
                log.error(traceback.format_exc())
 
                h.flash(_('Cannot delete this group it still contains '
 
                          'subgroups'),
 
                        category='warning')
 
            else:
 
                log.error(traceback.format_exc())
 
                h.flash(_('error occurred during deletion of repos '
 
                          'group %s' % gr.group_name), category='error')
 

	
 
        except Exception:
 
            log.error(traceback.format_exc())
 
            h.flash(_('error occurred during deletion of repos '
 
                      'group %s' % gr.group_name), category='error')
 

	
 
        return redirect(url('repos_groups'))
 

	
 
    def show_by_name(self, group_name):
 
        id_ = RepoGroup.get_by_group_name(group_name).group_id
 
        return self.show(id_)
 

	
 
    def show(self, id, format='html'):
 
        """GET /repos_groups/id: Show a specific item"""
 
        # url('repos_group', id=ID)
rhodecode/templates/admin/repos/repo_edit.html
Show inline comments
 
@@ -67,101 +67,101 @@
 
                    ${h.textarea('description',cols=23,rows=5)}
 
                </div>
 
            </div>
 

	
 
            <div class="field">
 
                <div class="label label-checkbox">
 
                    <label for="private">${_('Private')}:</label>
 
                </div>
 
                <div class="checkboxes">
 
                    ${h.checkbox('private',value="True")}
 
                </div>
 
            </div>
 
            <div class="field">
 
                <div class="label label-checkbox">
 
                    <label for="enable_statistics">${_('Enable statistics')}:</label>
 
                </div>
 
                <div class="checkboxes">
 
                    ${h.checkbox('enable_statistics',value="True")}
 
                </div>
 
            </div>
 
            <div class="field">
 
                <div class="label label-checkbox">
 
                    <label for="enable_downloads">${_('Enable downloads')}:</label>
 
                </div>
 
                <div class="checkboxes">
 
                    ${h.checkbox('enable_downloads',value="True")}
 
                </div>
 
            </div>
 
            <div class="field">
 
                <div class="label">
 
                    <label for="user">${_('Owner')}:</label>
 
                </div>
 
                <div class="input input-small ac">
 
                    <div class="perm_ac">
 
                       ${h.text('user',class_='yui-ac-input')}
 
                       <div id="owner_container"></div>
 
                    </div>
 
                </div>
 
             </div>
 

	
 
            <div class="field">
 
                <div class="label">
 
                    <label for="input">${_('Permissions')}:</label>
 
                </div>
 
                <div class="input">
 
                    <%include file="repo_edit_perms.html"/>
 
                </div>
 

	
 
            <div class="buttons">
 
              ${h.submit('save','Save',class_="ui-button")}
 
              ${h.reset('reset','Reset',class_="ui-button")}
 
                <div class="buttons">
 
                  ${h.submit('save','Save',class_="ui-button")}
 
                  ${h.reset('reset','Reset',class_="ui-button")}
 
                </div>
 
            </div>
 
        </div>
 
    </div>
 
    </div>
 
    ${h.end_form()}
 
</div>
 

	
 
<div class="box box-right">
 
    <div class="title">
 
        <h5>${_('Administration')}</h5>
 
    </div>
 

	
 
        <h3>${_('Statistics')}</h3>
 
        ${h.form(url('repo_stats', repo_name=c.repo_info.repo_name),method='delete')}
 
        <div class="form">
 
           <div class="fields">
 
               ${h.submit('reset_stats_%s' % c.repo_info.repo_name,_('Reset current statistics'),class_="ui-btn",onclick="return confirm('"+_('Confirm to remove current statistics')+"');")}
 
               <div class="field" style="border:none;color:#888">
 
               <ul>
 
                    <li>${_('Fetched to rev')}: ${c.stats_revision}/${c.repo_last_rev}</li>
 
                    <li>${_('Percentage of stats gathered')}: ${c.stats_percentage} %</li>
 
               </ul>
 
               </div>
 
           </div>
 
        </div>
 
        ${h.end_form()}
 

	
 
        %if c.repo_info.clone_uri:
 
        <h3>${_('Remote')}</h3>
 
        ${h.form(url('repo_pull', repo_name=c.repo_info.repo_name),method='put')}
 
        <div class="form">
 
           <div class="fields">
 
               ${h.submit('remote_pull_%s' % c.repo_info.repo_name,_('Pull changes from remote location'),class_="ui-btn",onclick="return confirm('"+_('Confirm to pull changes from remote side')+"');")}
 
               <div class="field" style="border:none">
 
               <ul>
 
                    <li><a href="${c.repo_info.clone_uri}">${c.repo_info.clone_uri}</a></li>
 
               </ul>
 
               </div>
 
           </div>
 
        </div>
 
        ${h.end_form()}
 
        %endif
 

	
 
        <h3>${_('Cache')}</h3>
 
        ${h.form(url('repo_cache', repo_name=c.repo_info.repo_name),method='delete')}
 
        <div class="form">
 
           <div class="fields">
 
               ${h.submit('reset_cache_%s' % c.repo_info.repo_name,_('Invalidate repository cache'),class_="ui-btn",onclick="return confirm('"+_('Confirm to invalidate repository cache')+"');")}
 
           </div>
 
        </div>
rhodecode/templates/admin/users/user_edit_my_account.html
Show inline comments
 
@@ -92,99 +92,99 @@
 
	             <div class="field">
 
	                <div class="label">
 
	                    <label for="email">${_('Email')}:</label>
 
	                </div>
 
	                <div class="input">
 
	                    ${h.text('email',class_="medium")}
 
	                </div>
 
	             </div>
 

	
 
	            <div class="buttons">
 
	              ${h.submit('save',_('Save'),class_="ui-button")}
 
	              ${h.reset('reset',_('Reset'),class_="ui-button")}
 
	            </div>
 
	    	</div>
 
	    </div>
 
    ${h.end_form()}
 
    </div>
 
</div>
 

	
 
<div class="box box-right">
 
    <!-- box / title -->
 
    <div class="title">
 
        <h5>
 
        <input class="q_filter_box" id="q_filter" size="15" type="text" name="filter" value="${_('quick filter...')}"/>
 
        ${_('My repositories')}
 
        </h5>
 
         %if h.HasPermissionAny('hg.admin','hg.create.repository')():
 
         <ul class="links">
 
           <li>
 
             <span>${h.link_to(_('ADD REPOSITORY'),h.url('admin_settings_create_repository'))}</span>
 
           </li>
 
         </ul>
 
         %endif
 
    </div>
 
    <!-- end box / title -->
 
    <div class="table">
 
	    <table>
 
	    <thead>
 
            <tr>
 
            <th class="left">${_('Name')}</th>
 
            <th class="left">${_('revision')}</th>
 
            <th colspan="2" class="left">${_('action')}</th>
 
	    </thead>
 
	     <tbody>
 
	     %if c.user_repos:
 
		     %for repo in c.user_repos:
 
		        <tr>
 
		            <td>
 
                     %if repo['dbrepo']['repo_type'] =='hg':
 
                     %if h.is_hg(repo['dbrepo']['repo_type']):
 
                       <img class="icon" title="${_('Mercurial repository')}" alt="${_('Mercurial repository')}" src="${h.url('/images/icons/hgicon.png')}"/>
 
                     %elif repo['dbrepo']['repo_type'] =='git':
 
                     %elif h.is_git(repo['dbrepo']['repo_type']):
 
                       <img class="icon" title="${_('Git repository')}" alt="${_('Git repository')}" src="${h.url('/images/icons/giticon.png')}"/>
 
                     %else:
 

	
 
                     %endif
 
		             %if repo['dbrepo']['private']:
 
		                <img class="icon" alt="${_('private')}" src="${h.url('/images/icons/lock.png')}"/>
 
		             %else:
 
		                <img class="icon" alt="${_('public')}" src="${h.url('/images/icons/lock_open.png')}"/>
 
		             %endif
 

	
 
		            ${h.link_to(repo['name'], h.url('summary_home',repo_name=repo['name']),class_="repo_name")}
 
		            %if repo['dbrepo_fork']:
 
		            	<a href="${h.url('summary_home',repo_name=repo['dbrepo_fork']['repo_name'])}">
 
		            	<img class="icon" alt="${_('public')}"
 
		            	title="${_('Fork of')} ${repo['dbrepo_fork']['repo_name']}"
 
		            	src="${h.url('/images/icons/arrow_divide.png')}"/></a>
 
		            %endif
 
		            </td>
 
		            <td><span class="tooltip" title="${repo['last_change']}">${("r%s:%s") % (repo['rev'],h.short_id(repo['tip']))}</span></td>
 
		            <td><a href="${h.url('repo_settings_home',repo_name=repo['name'])}" title="${_('edit')}"><img class="icon" alt="${_('private')}" src="${h.url('/images/icons/application_form_edit.png')}"/></a></td>
 
		            <td>
 
	                  ${h.form(url('repo_settings_delete', repo_name=repo['name']),method='delete')}
 
	                    ${h.submit('remove_%s' % repo['name'],'',class_="delete_icon action_button",onclick="return confirm('"+_('Confirm to delete this repository: %s') % repo['name']+"');")}
 
	                  ${h.end_form()}
 
		            </td>
 
		        </tr>
 
		     %endfor
 
	     %else:
 
            <div style="padding:5px 0px 10px 0px;">
 
	     	${_('No repositories yet')}
 
	     	%if h.HasPermissionAny('hg.admin','hg.create.repository')():
 
	     		${h.link_to(_('create one now'),h.url('admin_settings_create_repository'),class_="ui-btn")}
 
	     	%endif
 
            </div>
 
	     %endif
 
	     </tbody>
 
	     </table>
 
    </div>
 
</div>
 
<script type="text/javascript">
 
var nodes = YUQ('div.table tr td a.repo_name');
 
var target = 'q_filter';
 
var func = function(node){
 
    return node.parentNode.parentNode;
 
}
 
q_filter(target,nodes,func);
 
</script>
 
</%def>
rhodecode/templates/admin/users_groups/users_group_edit.html
Show inline comments
 
@@ -95,196 +95,186 @@ ${h.end_form()}
 
</div>
 

	
 
<div class="box box-right">
 
    <!-- box / title -->
 
    <div class="title">
 
        <h5>${_('Permissions')}</h5>
 
    </div>
 
    ${h.form(url('users_group_perm', id=c.users_group.users_group_id), method='put')}
 
    <div class="form">
 
        <!-- fields -->
 
        <div class="fields">
 
             <div class="field">
 
                <div class="label label-checkbox">
 
                    <label for="create_repo_perm">${_('Create repositories')}:</label>
 
                </div>
 
                <div class="checkboxes">
 
                    ${h.checkbox('create_repo_perm',value=True)}
 
                </div>
 
             </div>
 
            <div class="buttons">
 
              ${h.submit('save',_('Save'),class_="ui-button")}
 
              ${h.reset('reset',_('Reset'),class_="ui-button")}
 
            </div>
 
        </div>
 
    </div>
 
    ${h.end_form()}
 
</div>
 

	
 
<div class="box box-right">
 
    <!-- box / title -->
 
    <div class="title">
 
        <h5>${_('Group members')}</h5>
 
    </div>
 
    <div class="group_members_wrap">
 
      <ul class="group_members">
 
      %for user in c.group_members_obj:
 
        <li>
 
          <div class="group_member">
 
            <div class="gravatar"><img alt="gravatar" src="${h.gravatar_url(user.email,24)}"/> </div>
 
            <div>${user.username}</div>
 
            <div>${user.full_name}</div>
 
          </div>
 
        </li>
 
      %endfor
 
      </ul>
 
    </div>
 
</div>
 
<script type="text/javascript">
 
    YAHOO.util.Event.onDOMReady(function(){
 
            var D = YAHOO.util.Dom;
 
            var E = YAHOO.util.Event;
 

	
 
            //definition of containers ID's
 
            var available_container = 'available_members';
 
            var selected_container = 'users_group_members';
 
YAHOO.util.Event.onDOMReady(function(){
 
  var D = YAHOO.util.Dom;
 
  var E = YAHOO.util.Event;
 

	
 
            //form containing containers id
 
            var form_id = 'edit_users_group';
 
  //definition of containers ID's
 
  var available_container = 'available_members';
 
  var selected_container = 'users_group_members';
 

	
 
            //temp container for selected storage.
 
            var cache = new Array();
 
            var av_cache = new Array();
 
            var c =  D.get(selected_container);
 
            var ac = D.get(available_container);
 
  //form containing containers id
 
  var form_id = 'edit_users_group';
 

	
 
            //get only selected options for further fullfilment
 
            for(var i = 0;node =c.options[i];i++){
 
                if(node.selected){
 
                    //push selected to my temp storage left overs :)
 
                    cache.push(node);
 
                }
 
            }
 
  //temp container for selected storage.
 
  var cache = new Array();
 
  var av_cache = new Array();
 
  var c =  D.get(selected_container);
 
  var ac = D.get(available_container);
 

	
 
            //clear 'selected' select
 
            //c.options.length = 0;
 
  //get only selected options for further fullfilment
 
  for(var i = 0;node =c.options[i];i++){
 
      if(node.selected){
 
          //push selected to my temp storage left overs :)
 
          cache.push(node);
 
      }
 
  }
 

	
 
            //fill it with remembered options
 
            //for(var i = 0;node = cache[i];i++){
 
            //   c.options[i]=new Option(node.text, node.value, false, false);
 
            //}
 

	
 
  //get all available options to cache
 
  for(var i = 0;node =ac.options[i];i++){
 
          //push selected to my temp storage left overs :)
 
          av_cache.push(node);
 
  }
 

	
 
            //get all available options to cache
 
            for(var i = 0;node =ac.options[i];i++){
 
                    //push selected to my temp storage left overs :)
 
                    av_cache.push(node);
 
            }
 

	
 
            //fill available only with those not in choosen
 
            ac.options.length=0;
 
            tmp_cache = new Array();
 
  //fill available only with those not in choosen
 
  ac.options.length=0;
 
  tmp_cache = new Array();
 

	
 
            for(var i = 0;node = av_cache[i];i++){
 
                var add = true;
 
                for(var i2 = 0;node_2 = cache[i2];i2++){
 
                    if(node.value == node_2.value){
 
                        add=false;
 
                        break;
 
                    }
 
                }
 
                if(add){
 
                    tmp_cache.push(new Option(node.text, node.value, false, false));
 
                }
 
            }
 
  for(var i = 0;node = av_cache[i];i++){
 
      var add = true;
 
      for(var i2 = 0;node_2 = cache[i2];i2++){
 
          if(node.value == node_2.value){
 
              add=false;
 
              break;
 
          }
 
      }
 
      if(add){
 
          tmp_cache.push(new Option(node.text, node.value, false, false));
 
      }
 
  }
 

	
 
            for(var i = 0;node = tmp_cache[i];i++){
 
                ac.options[i] = node;
 
            }
 
  for(var i = 0;node = tmp_cache[i];i++){
 
      ac.options[i] = node;
 
  }
 

	
 
            function prompts_action_callback(e){
 
  function prompts_action_callback(e){
 

	
 
                var choosen = D.get(selected_container);
 
                var available = D.get(available_container);
 
      var choosen = D.get(selected_container);
 
      var available = D.get(available_container);
 

	
 
                //get checked and unchecked options from field
 
                function get_checked(from_field){
 
                    //temp container for storage.
 
                    var sel_cache = new Array();
 
                    var oth_cache = new Array();
 
      //get checked and unchecked options from field
 
      function get_checked(from_field){
 
          //temp container for storage.
 
          var sel_cache = new Array();
 
          var oth_cache = new Array();
 

	
 
                    for(var i = 0;node = from_field.options[i];i++){
 
                        if(node.selected){
 
                            //push selected fields :)
 
                            sel_cache.push(node);
 
                        }
 
                        else{
 
                            oth_cache.push(node)
 
                        }
 
                    }
 
          for(var i = 0;node = from_field.options[i];i++){
 
              if(node.selected){
 
                  //push selected fields :)
 
                  sel_cache.push(node);
 
              }
 
              else{
 
                  oth_cache.push(node)
 
              }
 
          }
 

	
 
                    return [sel_cache,oth_cache]
 
                }
 
          return [sel_cache,oth_cache]
 
      }
 

	
 
                //fill the field with given options
 
                function fill_with(field,options){
 
                    //clear firtst
 
                    field.options.length=0;
 
                    for(var i = 0;node = options[i];i++){
 
                            field.options[i]=new Option(node.text, node.value,
 
                                    false, false);
 
                    }
 
      //fill the field with given options
 
      function fill_with(field,options){
 
          //clear firtst
 
          field.options.length=0;
 
          for(var i = 0;node = options[i];i++){
 
                  field.options[i]=new Option(node.text, node.value,
 
                          false, false);
 
          }
 

	
 
                }
 
                //adds to current field
 
                function add_to(field,options){
 
                    for(var i = 0;node = options[i];i++){
 
                            field.appendChild(new Option(node.text, node.value,
 
                                    false, false));
 
                    }
 
                }
 
      }
 
      //adds to current field
 
      function add_to(field,options){
 
          for(var i = 0;node = options[i];i++){
 
                  field.appendChild(new Option(node.text, node.value,
 
                          false, false));
 
          }
 
      }
 

	
 
                // add action
 
                if (this.id=='add_element'){
 
                    var c = get_checked(available);
 
                    add_to(choosen,c[0]);
 
                    fill_with(available,c[1]);
 
                }
 
                // remove action
 
                if (this.id=='remove_element'){
 
                    var c = get_checked(choosen);
 
                    add_to(available,c[0]);
 
                    fill_with(choosen,c[1]);
 
                }
 
                // add all elements
 
                if(this.id=='add_all_elements'){
 
                    for(var i=0; node = available.options[i];i++){
 
                            choosen.appendChild(new Option(node.text,
 
                                    node.value, false, false));
 
                    }
 
                    available.options.length = 0;
 
                }
 
                //remove all elements
 
                if(this.id=='remove_all_elements'){
 
                    for(var i=0; node = choosen.options[i];i++){
 
                        available.appendChild(new Option(node.text,
 
                                node.value, false, false));
 
                    }
 
                    choosen.options.length = 0;
 
                }
 
      // add action
 
      if (this.id=='add_element'){
 
          var c = get_checked(available);
 
          add_to(choosen,c[0]);
 
          fill_with(available,c[1]);
 
      }
 
      // remove action
 
      if (this.id=='remove_element'){
 
          var c = get_checked(choosen);
 
          add_to(available,c[0]);
 
          fill_with(choosen,c[1]);
 
      }
 
      // add all elements
 
      if(this.id=='add_all_elements'){
 
          for(var i=0; node = available.options[i];i++){
 
                  choosen.appendChild(new Option(node.text,
 
                          node.value, false, false));
 
          }
 
          available.options.length = 0;
 
      }
 
      //remove all elements
 
      if(this.id=='remove_all_elements'){
 
          for(var i=0; node = choosen.options[i];i++){
 
              available.appendChild(new Option(node.text,
 
                      node.value, false, false));
 
          }
 
          choosen.options.length = 0;
 
      }
 

	
 
            }
 

	
 
  }
 

	
 
            E.addListener(['add_element','remove_element',
 
                           'add_all_elements','remove_all_elements'],'click',
 
                           prompts_action_callback)
 
  E.addListener(['add_element','remove_element',
 
                 'add_all_elements','remove_all_elements'],'click',
 
                 prompts_action_callback)
 

	
 
            E.addListener(form_id,'submit',function(){
 
                var choosen = D.get(selected_container);
 
                for (var i = 0; i < choosen.options.length; i++) {
 
                    choosen.options[i].selected = 'selected';
 
                }
 
            })
 
        });
 
  E.addListener(form_id,'submit',function(){
 
      var choosen = D.get(selected_container);
 
      for (var i = 0; i < choosen.options.length; i++) {
 
          choosen.options[i].selected = 'selected';
 
      }
 
  });
 
});
 
</script>
 
</%def>
0 comments (0 inline, 0 general)