diff options
author | Leif Johansson <leifj@sunet.se> | 2011-03-03 11:48:43 +0100 |
---|---|---|
committer | Leif Johansson <leifj@sunet.se> | 2011-03-03 11:48:43 +0100 |
commit | 85b6c6dc096dfbf44d51a13a8a9d16e152e58fe8 (patch) | |
tree | 3597f97a89ba0b797e09b4f7feba5b5fa39b83c7 /coip | |
parent | 2f74fb8b791eade1c0f4d1093139e4f0066efc40 (diff) |
client side validation
Diffstat (limited to 'coip')
-rw-r--r-- | coip/apps/name/forms.py | 23 | ||||
-rw-r--r-- | coip/apps/name/models.py | 28 |
2 files changed, 42 insertions, 9 deletions
diff --git a/coip/apps/name/forms.py b/coip/apps/name/forms.py index 759579c..dc36ecd 100644 --- a/coip/apps/name/forms.py +++ b/coip/apps/name/forms.py @@ -19,20 +19,29 @@ class AttributeForm(forms.ModelForm): class NameEditForm(BetterModelForm): description = forms.CharField(widget=forms.Textarea(attrs={'cols': 60, 'rows': 6})) + error_css_class = 'error' + required_css_class = 'required' class Meta: model = Name - fields = ['short','description'] + fields = ['short','description','format'] fieldsets = [('step1', {'fields': ['short', 'description'], 'legend': 'Describe your group', - 'classes': ['step submit_step'], - 'description': 'Provide a short and (optionally) longer description of your group..'})] + 'classes': ['step'], + 'description': 'Provide a short and (optionally) longer description of your group.'}), + ('step2', {'fields': ['format'], + 'legend': 'Step 2 (optional): Advanced options', + 'classes': ['step','submit_step'], + 'description': 'Only change these settings if you know what you are doing.'}) + ] class NewNameForm(BetterModelForm): description = forms.CharField(widget=forms.Textarea(attrs={'cols': 60, 'rows': 6})) value = forms.CharField(label="Name") + #error_css_class = 'error' + #required_css_class = 'required' class Meta: model = Name - fields = ['value','short','description','type'] + fields = ['value','short','description','type','format'] fieldsets = [('step1', {'fields': ['value'], 'legend': 'Step 1: Name your group', 'classes': ['step'], @@ -40,11 +49,11 @@ class NewNameForm(BetterModelForm): ('step2', {'fields': ['short', 'description'], 'legend': 'Step 2: Describe your group', 'classes': ['step'], - 'description': 'Provide a short and (optionally) longer description of your group..'}), - ('step3', {'fields': ['type'], + 'description': 'Provide a short and (optionally) longer description of your group.'}), + ('step3', {'fields': ['type','format'], 'legend': 'Step 3 (optional): Advanced options', 'classes': ['step','submit_step'], - 'description': 'Only set the type if you know what you are doing. You almost certainly do not need this.'})] + 'description': 'Only change these settings if you know what you are doing...'})] class NameDeleteForm(BetterForm): recursive = fields.BooleanField(label="Also delete everything below this name?",required=False) diff --git a/coip/apps/name/models.py b/coip/apps/name/models.py index 142cd5e..a1384a3 100644 --- a/coip/apps/name/models.py +++ b/coip/apps/name/models.py @@ -21,10 +21,13 @@ class Attribute(models.Model): def __unicode__(self): return self.name; +FMT_URN = 0 +FMT_URL = 1 + class Name(models.Model): ''' A name-space/authorization/right/group/collaboration/thing - ''' + ''' type = models.ForeignKey(Attribute, blank=True, null=True,related_name='names') value = models.CharField(max_length=255) parent = models.ForeignKey('self', blank=True, null=True,related_name='children') @@ -32,9 +35,16 @@ class Name(models.Model): creator = models.ForeignKey(User,blank=True, null=True) display = models.TextField(editable=False) description = models.TextField(blank=True) + format = models.SmallIntegerField(default=FMT_URN,choices=((FMT_URN,"URN"),(FMT_URL,"URL"))) timecreated = models.DateTimeField(auto_now_add=True) lastupdated = models.DateTimeField(auto_now=True) + def mode(self): + if not self.format: + return FMT_URN + else: + return self.format + def shortname(self): if self.short: return self.short @@ -50,6 +60,14 @@ class Name(models.Model): def __unicode__(self): return self.display + def display_str(self): + if self.mode() == FMT_URN: + return self.display_str_urn() + elif self.mode() == FMT_URL: + return self.display_str_url() + else: + raise Exception,"unknown format for %s (%d)" % (self.value,self.id) + def display_str_urn(self): n = self str = "" @@ -88,6 +106,12 @@ class Name(models.Model): def url(self): return "%s/name/%s" % (PREFIX_URL,self.display_str_url()) + + def uri(self): + if self.mode() == FMT_URN: + return self.display + else: # implement more format as needed + return "%s/name/%s" % (PREFIX_URL,self.display) def summary(self): return {'name': self.display, 'url': self.url(), 'short': self.short} @@ -166,7 +190,7 @@ class Name(models.Model): return filter(lambda s: s.has_permission(user,perm),self.children.all()) def set_display(sender,**kwargs): - kwargs['instance'].display = kwargs['instance'].display_str_urn() + kwargs['instance'].display = kwargs['instance'].display_str() pre_save.connect(set_display,sender=Name) |