src/cm/views/site.py
changeset 164 cc217bd00476
parent 161 5f30378c79a4
child 220 7d278fde2748
--- a/src/cm/views/site.py	Thu Feb 11 19:48:16 2010 +0100
+++ b/src/cm/views/site.py	Fri Feb 12 11:48:23 2010 +0100
@@ -145,7 +145,22 @@
 from cm.role_models import role_models_choices
 from django.utils.safestring import mark_safe
 
-class SettingsForm(forms.Form):
+class BaseSettingsForm(forms.Form):
+    def __init__(self, data=None, initial=None):
+        forms.Form.__init__(self, data=data, initial=initial)
+        for field in self.fields:
+            if field in self.conf_fields:
+                self.fields[field].initial = Configuration.objects.get_key(field)
+                
+                self.fields[field].initial = Configuration.objects.get_key(field)
+    
+    def save(self):
+        for field in self.fields:
+            if field in self.conf_fields:
+                val = self.cleaned_data[field]
+                Configuration.objects.set_key(field, val)
+                                    
+class SettingsForm(BaseSettingsForm):
     workspace_name = forms.CharField(label=ugettext_lazy("Workspace name"),
                                      widget=forms.TextInput,
                                      required=False,
@@ -156,8 +171,6 @@
                                         required=False,
                                         )
 
-    workspace_logo_file  = forms.FileField(label=ugettext_lazy("Workspace logo"),required=False)
-
     workspace_registration = forms.BooleanField(label=ugettext_lazy("Workspace registration"),
                                                 help_text=ugettext_lazy("Can users register themselves into the workspace? (if not, only invitations by managers can create new users)"),
                                                 required=False,
@@ -178,22 +191,7 @@
     # fields to save in the Configuration objects
     conf_fields = ['workspace_name', 'workspace_tagline', 'workspace_registration', 'workspace_registration_moderation', 'workspace_role_model']
 
-    def __init__(self, data=None, initial=None):
-        forms.Form.__init__(self, data=data, initial=initial)
-        for field in self.fields:
-            if field in self.conf_fields:
-                self.fields[field].initial = Configuration.objects.get_key(field)
-    
-    def save(self):
-        for field in self.fields:
-            if field in self.conf_fields:
-                val = self.cleaned_data[field]
-                Configuration.objects.set_key(field, val)
-        #handle_uploaded_file()
-    def save_file(self, logo_file):
-        attach = Attachment.objects.create_attachment(filename='wp_logo', data=logo_file.read(), text_version=None)
-        Configuration.objects.set_key('workspace_logo_file_key', attach.key)
-        
+
 @has_global_perm('can_manage_workspace')
 def settingss(request):
     if request.method == 'POST':
@@ -205,9 +203,6 @@
             form = SettingsForm(data=request.POST)
             if form.is_valid() :
                 form.save()
-                logo_file = request.FILES.get('workspace_logo_file',None)
-                if logo_file:
-                    form.save_file(logo_file)
                 display_message(request, _(u'Settings saved'))
                 return HttpResponseRedirect(reverse('index'))
     else:
@@ -215,6 +210,43 @@
     
     return render_to_response('site/settings.html', {'form' : form, 'help_links' : {'workspace_role_model':'role_model'}}, context_instance=RequestContext(request))
 
+class SettingsDesignForm(BaseSettingsForm):
+    workspace_logo_file  = forms.FileField(label=ugettext_lazy("Workspace logo"),required=False)
+    
+    workspace_code = forms.CharField(label=ugettext_lazy("Workspace html code"),
+                                     help_text=(ugettext_lazy("Add stylesheets etc. Warning: this code will be added to the workspace code, make sure you know what you're doing before adding something here.")),
+                                     widget=forms.Textarea,
+                                     required=False,
+                                     )
+
+    conf_fields = ['workspace_code']
+    
+    def save_file(self, logo_file):
+        attach = Attachment.objects.create_attachment(filename='wp_logo', data=logo_file.read(), text_version=None)
+        Configuration.objects.set_key('workspace_logo_file_key', attach.key)
+        
+    
+@has_global_perm('can_manage_workspace')
+def settings_design(request):
+    if request.method == 'POST':
+        if 'delete_logo' in request.POST:
+            Configuration.objects.del_key('workspace_logo_file_key')
+            display_message(request, _(u'Settings saved'))
+            return HttpResponseRedirect(reverse('index'))            
+        else:
+            form = SettingsDesignForm(data=request.POST)
+            if form.is_valid() :
+                form.save()
+                logo_file = request.FILES.get('workspace_logo_file',None)
+                if logo_file:
+                    form.save_file(logo_file)
+                display_message(request, _(u'Settings saved'))
+                return HttpResponseRedirect(reverse('index'))
+    else:
+        form = SettingsDesignForm()
+    
+    return render_to_response('site/settings_design.html', {'form' : form}, context_instance=RequestContext(request))
+    
 def help(request):
     return render_to_response('site/help.html', context_instance=RequestContext(request))