diff -r c3329d4d6ef5 -r cc217bd00476 src/cm/views/site.py --- 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))