From 13417cf9c6eec555b51da49742e47939d2f5715b Mon Sep 17 00:00:00 2001 From: James Moger <james.moger@gitblit.com> Date: Fri, 19 Oct 2012 22:47:33 -0400 Subject: [PATCH] Exclude submodules from zip downloads (issue 151) --- src/com/gitblit/models/TeamModel.java | 46 +++++++++++++++++++++++++++++++++++++++++++++- 1 files changed, 45 insertions(+), 1 deletions(-) diff --git a/src/com/gitblit/models/TeamModel.java b/src/com/gitblit/models/TeamModel.java index d185b9d..95e6ef4 100644 --- a/src/com/gitblit/models/TeamModel.java +++ b/src/com/gitblit/models/TeamModel.java @@ -18,6 +18,7 @@ import java.io.Serializable; import java.util.ArrayList; import java.util.Collection; +import java.util.Collections; import java.util.HashMap; import java.util.HashSet; import java.util.List; @@ -41,6 +42,9 @@ // field names are reflectively mapped in EditTeam page public String name; + public boolean canAdmin; + public boolean canFork; + public boolean canCreate; public final Set<String> users = new HashSet<String>(); // retained for backwards-compatibility with RPC clients @Deprecated @@ -82,6 +86,21 @@ public void removeRepository(String name) { removeRepositoryPermission(name); } + + + /** + * Returns a list of repository permissions for this team. + * + * @return the team's list of permissions + */ + public List<RepositoryAccessPermission> getRepositoryPermissions() { + List<RepositoryAccessPermission> list = new ArrayList<RepositoryAccessPermission>(); + for (Map.Entry<String, AccessPermission> entry : permissions.entrySet()) { + list.add(new RepositoryAccessPermission(entry.getKey(), entry.getValue())); + } + Collections.sort(list); + return list; + } /** * Returns true if the team has any type of specified access permission for @@ -92,7 +111,21 @@ */ public boolean hasRepositoryPermission(String name) { String repository = AccessPermission.repositoryFromRole(name).toLowerCase(); - return permissions.containsKey(repository) || repositories.contains(repository); + if (permissions.containsKey(repository)) { + // exact repository permission specified + return true; + } else { + // search for regex permission match + for (String key : permissions.keySet()) { + if (name.matches(key)) { + AccessPermission p = permissions.get(key); + if (p != null) { + return true; + } + } + } + } + return false; } /** @@ -132,10 +165,21 @@ public AccessPermission getRepositoryPermission(RepositoryModel repository) { AccessPermission permission = AccessPermission.NONE; if (permissions.containsKey(repository.name.toLowerCase())) { + // exact repository permission specified AccessPermission p = permissions.get(repository.name.toLowerCase()); if (p != null) { permission = p; } + } else { + // search for regex permission match + for (String key : permissions.keySet()) { + if (repository.name.matches(key)) { + AccessPermission p = permissions.get(key); + if (p != null) { + permission = p; + } + } + } } return permission; } -- Gitblit v1.9.1