webapp: Don't list the public repository group when editing a git repository; it only makes sense for special remotes.

This commit is contained in:
Joey Hess 2014-02-28 20:37:03 -04:00
parent c8528864e1
commit 6469c1aca9
3 changed files with 18 additions and 5 deletions

View file

@ -30,6 +30,7 @@ import Logs.PreferredContent
import Logs.Remote import Logs.Remote
import Types.StandardGroups import Types.StandardGroups
import qualified Git import qualified Git
import qualified Git.Types as Git
import qualified Git.Command import qualified Git.Command
import qualified Git.Config import qualified Git.Config
import qualified Annex import qualified Annex
@ -137,8 +138,8 @@ setRepoConfig uuid mremote oldc newc = do
legalName = makeLegalName . T.unpack . repoName legalName = makeLegalName . T.unpack . repoName
editRepositoryAForm :: Bool -> RepoConfig -> MkAForm RepoConfig editRepositoryAForm :: Maybe Remote -> RepoConfig -> MkAForm RepoConfig
editRepositoryAForm ishere def = RepoConfig editRepositoryAForm mremote def = RepoConfig
<$> areq (if ishere then readonlyTextField else textField) <$> areq (if ishere then readonlyTextField else textField)
"Name" (Just $ repoName def) "Name" (Just $ repoName def)
<*> aopt textField "Description" (Just $ repoDescription def) <*> aopt textField "Description" (Just $ repoDescription def)
@ -146,10 +147,16 @@ editRepositoryAForm ishere def = RepoConfig
<*> associateddirectory <*> associateddirectory
<*> areq checkBoxField "Syncing enabled" (Just $ repoSyncable def) <*> areq checkBoxField "Syncing enabled" (Just $ repoSyncable def)
where where
ishere = isNothing mremote
isspecial = fromMaybe False $
(== Git.Unknown) . Git.location . Remote.repo <$> mremote
groups = customgroups ++ standardgroups groups = customgroups ++ standardgroups
standardgroups :: [(Text, RepoGroup)] standardgroups :: [(Text, RepoGroup)]
standardgroups = map (\g -> (T.pack $ descStandardGroup g , RepoGroupStandard g)) standardgroups = map (\g -> (T.pack $ descStandardGroup g , RepoGroupStandard g)) $
[minBound :: StandardGroup .. maxBound :: StandardGroup] filter sanegroup [minBound..maxBound]
sanegroup
| isspecial = const True
| otherwise = not . specialRemoteOnly
customgroups :: [(Text, RepoGroup)] customgroups :: [(Text, RepoGroup)]
customgroups = case repoGroup def of customgroups = case repoGroup def of
RepoGroupCustom s -> [(T.pack s, RepoGroupCustom s)] RepoGroupCustom s -> [(T.pack s, RepoGroupCustom s)]
@ -187,7 +194,7 @@ editForm new (RepoUUID uuid) = page "Edit repository" (Just Configuration) $ do
curr <- liftAnnex $ getRepoConfig uuid mremote curr <- liftAnnex $ getRepoConfig uuid mremote
liftAnnex $ checkAssociatedDirectory curr mremote liftAnnex $ checkAssociatedDirectory curr mremote
((result, form), enctype) <- liftH $ ((result, form), enctype) <- liftH $
runFormPostNoToken $ renderBootstrap $ editRepositoryAForm (isNothing mremote) curr runFormPostNoToken $ renderBootstrap $ editRepositoryAForm mremote curr
case result of case result of
FormSuccess input -> liftH $ do FormSuccess input -> liftH $ do
setRepoConfig uuid mremote curr input setRepoConfig uuid mremote curr input

View file

@ -72,6 +72,10 @@ associatedDirectory (Just c) PublicGroup = Just $
associatedDirectory Nothing PublicGroup = Just "public" associatedDirectory Nothing PublicGroup = Just "public"
associatedDirectory _ _ = Nothing associatedDirectory _ _ = Nothing
specialRemoteOnly :: StandardGroup -> Bool
specialRemoteOnly PublicGroup = True
specialRemoteOnly _ = False
{- See doc/preferred_content.mdwn for explanations of these expressions. -} {- See doc/preferred_content.mdwn for explanations of these expressions. -}
preferredContent :: StandardGroup -> PreferredContentExpression preferredContent :: StandardGroup -> PreferredContentExpression
preferredContent ClientGroup = lastResort $ preferredContent ClientGroup = lastResort $

2
debian/changelog vendored
View file

@ -6,6 +6,8 @@ git-annex (5.20140228) UNRELEASED; urgency=medium
git directory anymore. (Or are bare) git directory anymore. (Or are bare)
* webapp: Refuse to start in a bare git repository. * webapp: Refuse to start in a bare git repository.
* assistant --autostart: Refuse to start in a bare git repository. * assistant --autostart: Refuse to start in a bare git repository.
* webapp: Don't list the public repository group when editing a
git repository; it only makes sense for special remotes.
-- Joey Hess <joeyh@debian.org> Fri, 28 Feb 2014 14:52:15 -0400 -- Joey Hess <joeyh@debian.org> Fri, 28 Feb 2014 14:52:15 -0400