diff rhodecode/model/forms.py @ 659:758f64f3fbda beta

extended repo creation by repo type. fixed fork creation to maintain repo type.
author Marcin Kuzminski <marcin@python-works.com>
date Fri, 05 Nov 2010 21:55:30 +0100
parents 05528ad948c4
children 673de12e6bf6
line wrap: on
line diff
--- a/rhodecode/model/forms.py	Fri Nov 05 18:47:00 2010 +0100
+++ b/rhodecode/model/forms.py	Fri Nov 05 21:55:30 2010 +0100
@@ -30,6 +30,7 @@
 from rhodecode.model.repo import RepoModel
 from rhodecode.model.db import User
 from webhelpers.pylonslib.secure_form import authentication_token
+from vcs import BACKENDS
 import formencode
 import logging
 import os
@@ -147,6 +148,15 @@
 
     return _ValidRepoName
 
+def ValidForkType(old_data):
+    class _ValidForkType(formencode.validators.FancyValidator):
+
+        def to_python(self, value, state):
+            if old_data['repo_type'] != value:
+                raise formencode.Invalid(_('Fork have to be the same type as original'), value, state)
+            return value
+    return _ValidForkType
+
 class ValidPerms(formencode.validators.FancyValidator):
     messages = {'perm_new_user_name':_('This username is not valid')}
 
@@ -292,7 +302,7 @@
         repo_name = All(UnicodeString(strip=True, min=1, not_empty=True), ValidRepoName(edit, old_data))
         description = UnicodeString(strip=True, min=1, not_empty=True)
         private = StringBoolean(if_missing=False)
-
+        repo_type = OneOf(BACKENDS.keys())
         if edit:
             user = All(Int(not_empty=True), ValidRepoUser)
 
@@ -306,7 +316,7 @@
         fork_name = All(UnicodeString(strip=True, min=1, not_empty=True), ValidRepoName(edit, old_data))
         description = UnicodeString(strip=True, min=1, not_empty=True)
         private = StringBoolean(if_missing=False)
-
+        repo_type = All(ValidForkType(old_data), OneOf(BACKENDS.keys()))
     return _RepoForkForm
 
 def RepoSettingsForm(edit=False, old_data={}):