2014-03-18 16 views
1

與TRAC v測試1.0如何顯示僅由任何權限可用的項目在TRAC simplemultiproject環境

我偶然與用戶所看到的項目,他們沒有獲得。我不希望他們只在這些項目上看到「沒有權限」,我只是想在用戶沒有權限查看項目時完全隱藏它。

這是一個q'n'd「解決方案」,只需將兩行代碼移動到另一個地方即可。 如果你們中有些人需要它,只需按如下所示更改它。

替換:

for project_name in sorted(projects.keys()): 
     has_access = True 
     can_show = True 
     if (project_name == "--None Project--"): 
      div_project = '<br><div id="project"><fieldset><legend><h2>Unbenanntes Projekt</h2></legend>' 
     else: 
      project_info = self.__SmpModel.get_project_info(project_name) 
      if project_info: 
       if hide_closed and project_info[4] > 0: # column 4 of table smp_project tells if project is closed 
        can_show = False 
       if self.__SmpModel.is_not_in_restricted_users(req.authname, project_info): 
        has_access = False 

      div_project = '<br><div id="project"><fieldset><legend><b>Projekt </b> <em style="font-size: 12pt; color: black;">%s</em></legend>' % project_name 
      if can_show and has_access and project_info and show_proj_descr: 
       div_project = div_project + '<div class="description" xml:space="preserve">' 
       if project_info[2]: 
        div_project = div_project + '%s<br/><br/>' % project_info[2] 

       div_project = div_project + '%s</div>' % wiki_to_html(project_info[3], self.env, req) 

     div_milestone = '' 

     if can_show and len(projects[project_name]) > 0: 
      if has_access: 
       for milestone in projects[project_name]: 
        mi = '<em>%s</em>' % milestone 
        for i in range(len(div_milestones_array)): 
         if(div_milestones_array[i].find(mi)>0): 
          div_milestone = div_milestone + div_milestones_array[i] 
      else: 
       div_milestone = '<em style="color: red;">no permission</em>' 
      div_project = div_project + to_unicode(div_milestone) + '</fieldset></div>' 
      div_projects_milestones = to_unicode(div_projects_milestones + div_project) 

    stream_div_projects_milestones = HTML(div_projects_milestones) 
    return stream_div_projects_milestones 

有:

for project_name in sorted(projects.keys()): 
     has_access = True 
     can_show = True 
     project_info = self.__SmpModel.get_project_info(project_name) 
     if self.__SmpModel.is_not_in_restricted_users(req.authname, project_info): 
      has_access = False 

     if has_access: 
      if (project_name == "--None Project--"): 
       div_project = '<br><div id="project"><fieldset><legend><h2>Unbenanntes Projekt</h2></legend>' 
      else: 
       if project_info: 
        if hide_closed and project_info[4] > 0: # column 4 of table smp_project tells if project is closed 
         can_show = False      

       div_project = '<br><div id="project"><fieldset><legend><b>Projekt </b> <em style="font-size: 12pt; color: black;">%s</em></legend>' % project_name 
       if can_show and has_access and project_info and show_proj_descr: 
        div_project = div_project + '<div class="description" xml:space="preserve">' 
        if project_info[2]: 
         div_project = div_project + '%s<br/><br/>' % project_info[2] 

        div_project = div_project + '%s</div>' % wiki_to_html(project_info[3], self.env, req) 

      div_milestone = '' 

      if can_show and len(projects[project_name]) > 0: 
       if has_access: 
        for milestone in projects[project_name]: 
         mi = '<em>%s</em>' % milestone 
         for i in range(len(div_milestones_array)): 
          if(div_milestones_array[i].find(mi)>0): 
           div_milestone = div_milestone + div_milestones_array[i] 
       else: 
        div_milestone = '<em style="color: red;">no permission</em>' 
       div_project = div_project + to_unicode(div_milestone) + '</fieldset></div>' 
       div_projects_milestones = to_unicode(div_projects_milestones + div_project) 

     stream_div_projects_milestones = HTML(div_projects_milestones) 
    return stream_div_projects_milestones 

simplemultiproject/roadmap.py

重新啓動Apache Web服務器,你會看到不僅是項目必須接取。

+0

雖然您的修改可能有用,但我猜你的問題的格式不是最適合此網站的格式。您甚至可以將您的解決方案作爲答案發布並接受它,但「理想」將成爲引發問題的問題(例如:用戶能夠查看他們無法訪問的項目)以及提供解決方案的答案它(你的修改,讓他們看到他們有什麼權限)。 – Claudio

+0

恩,後面我會想一想。但是,謝謝你的建議。 如果我認識你,你的意思是在兩個單獨的帖子中提問和回答,對吧? – Thyrador

+0

是的..本網站旨在作爲問題和答案論壇。同樣,你從一個其他人可能幫助你解決的問題開始。然後他們可能會通過評論您的問題向您詢問更多詳細信息,如果他們有解決方案建議,他們會在「您的答案」框中發佈答案。如果你自己也得到了答案,你也可以這樣做,這個問題可能對於那些想要解決你最初遇到的同樣問題的人有用。 – Claudio

回答

1

好吧,經過一段時間搞亂這個「解決方案」後,我在設置不同的過濾器時遇到了一些問題。在再次查看劇本後,我看到只有2行需要更改。

這是我的新的更好的解決方案: 只需用上面的代碼替換上面的代碼即可。

for project_name in sorted(projects.keys()): 
     has_access = True 
     can_show = True 
     if (project_name == "--None Project--"): 
      div_project = '<br><div id="project"><fieldset><legend><h2>Unbenanntes Projekt</h2></legend>' 
     else: 
      project_info = self.__SmpModel.get_project_info(project_name) 
      if project_info: 
       if hide_closed and project_info[4] > 0: # column 4 of table smp_project tells if project is closed 
        can_show = False 
       if self.__SmpModel.is_not_in_restricted_users(req.authname, project_info): 
        has_access = False 

      div_project = '<br><div id="project"><fieldset><legend><b>Projekt </b> <em style="font-size: 12pt; color: black;">%s</em></legend>' % project_name 
      if can_show and has_access and project_info and show_proj_descr: 
       div_project = div_project + '<div class="description" xml:space="preserve">' 
       if project_info[2]: 
        div_project = div_project + '%s<br/><br/>' % project_info[2] 

       div_project = div_project + '%s</div>' % wiki_to_html(project_info[3], self.env, req) 

     div_milestone = '' 

     if has_access:    
      if can_show and len(projects[project_name]) > 0: 

       for milestone in projects[project_name]: 
        mi = '<em>%s</em>' % milestone 
        for i in range(len(div_milestones_array)): 
         if(div_milestones_array[i].find(mi)>0): 
          div_milestone = div_milestone + div_milestones_array[i] 
      else: 
       div_milestone = '<em style="color: red;">no permission</em>' 
      div_project = div_project + to_unicode(div_milestone) + '</fieldset></div>' 
      div_projects_milestones = to_unicode(div_projects_milestones + div_project) 

    stream_div_projects_milestones = HTML(div_projects_milestones) 
    return stream_div_projects_milestones 
+0

我會考慮這個補丁並很快回來報告。不管怎麼說,還是要謝謝你! – falkb

+0

@VladimirOselsky:你爲什麼還原我的編輯? – falkb

+0

@這不是無效的編輯。請在你討論之前混淆你的問題。我的編輯只是以一種程序員可讀的形式轉換了Thyrador的文本,但它保留了信息並且不會添加任何內容。可以說是格式轉換。 – falkb