src/cm/views/site.py
changeset 164 cc217bd00476
parent 161 5f30378c79a4
child 220 7d278fde2748
equal deleted inserted replaced
163:c3329d4d6ef5 164:cc217bd00476
   143     pass
   143     pass
   144 
   144 
   145 from cm.role_models import role_models_choices
   145 from cm.role_models import role_models_choices
   146 from django.utils.safestring import mark_safe
   146 from django.utils.safestring import mark_safe
   147 
   147 
   148 class SettingsForm(forms.Form):
   148 class BaseSettingsForm(forms.Form):
       
   149     def __init__(self, data=None, initial=None):
       
   150         forms.Form.__init__(self, data=data, initial=initial)
       
   151         for field in self.fields:
       
   152             if field in self.conf_fields:
       
   153                 self.fields[field].initial = Configuration.objects.get_key(field)
       
   154                 
       
   155                 self.fields[field].initial = Configuration.objects.get_key(field)
       
   156     
       
   157     def save(self):
       
   158         for field in self.fields:
       
   159             if field in self.conf_fields:
       
   160                 val = self.cleaned_data[field]
       
   161                 Configuration.objects.set_key(field, val)
       
   162                                     
       
   163 class SettingsForm(BaseSettingsForm):
   149     workspace_name = forms.CharField(label=ugettext_lazy("Workspace name"),
   164     workspace_name = forms.CharField(label=ugettext_lazy("Workspace name"),
   150                                      widget=forms.TextInput,
   165                                      widget=forms.TextInput,
   151                                      required=False,
   166                                      required=False,
   152                                      )
   167                                      )
   153     
   168     
   154     workspace_tagline = forms.CharField(label=ugettext_lazy("Workspace tagline"),
   169     workspace_tagline = forms.CharField(label=ugettext_lazy("Workspace tagline"),
   155                                         widget=forms.TextInput,
   170                                         widget=forms.TextInput,
   156                                         required=False,
   171                                         required=False,
   157                                         )
   172                                         )
   158 
       
   159     workspace_logo_file  = forms.FileField(label=ugettext_lazy("Workspace logo"),required=False)
       
   160 
   173 
   161     workspace_registration = forms.BooleanField(label=ugettext_lazy("Workspace registration"),
   174     workspace_registration = forms.BooleanField(label=ugettext_lazy("Workspace registration"),
   162                                                 help_text=ugettext_lazy("Can users register themselves into the workspace? (if not, only invitations by managers can create new users)"),
   175                                                 help_text=ugettext_lazy("Can users register themselves into the workspace? (if not, only invitations by managers can create new users)"),
   163                                                 required=False,
   176                                                 required=False,
   164                                                 )
   177                                                 )
   176     
   189     
   177     
   190     
   178     # fields to save in the Configuration objects
   191     # fields to save in the Configuration objects
   179     conf_fields = ['workspace_name', 'workspace_tagline', 'workspace_registration', 'workspace_registration_moderation', 'workspace_role_model']
   192     conf_fields = ['workspace_name', 'workspace_tagline', 'workspace_registration', 'workspace_registration_moderation', 'workspace_role_model']
   180 
   193 
   181     def __init__(self, data=None, initial=None):
   194 
   182         forms.Form.__init__(self, data=data, initial=initial)
       
   183         for field in self.fields:
       
   184             if field in self.conf_fields:
       
   185                 self.fields[field].initial = Configuration.objects.get_key(field)
       
   186     
       
   187     def save(self):
       
   188         for field in self.fields:
       
   189             if field in self.conf_fields:
       
   190                 val = self.cleaned_data[field]
       
   191                 Configuration.objects.set_key(field, val)
       
   192         #handle_uploaded_file()
       
   193     def save_file(self, logo_file):
       
   194         attach = Attachment.objects.create_attachment(filename='wp_logo', data=logo_file.read(), text_version=None)
       
   195         Configuration.objects.set_key('workspace_logo_file_key', attach.key)
       
   196         
       
   197 @has_global_perm('can_manage_workspace')
   195 @has_global_perm('can_manage_workspace')
   198 def settingss(request):
   196 def settingss(request):
   199     if request.method == 'POST':
   197     if request.method == 'POST':
   200         if 'delete_logo' in request.POST:
   198         if 'delete_logo' in request.POST:
   201             Configuration.objects.del_key('workspace_logo_file_key')
   199             Configuration.objects.del_key('workspace_logo_file_key')
   202             display_message(request, _(u'Settings saved'))
   200             display_message(request, _(u'Settings saved'))
   203             return HttpResponseRedirect(reverse('index'))            
   201             return HttpResponseRedirect(reverse('index'))            
   204         else:
   202         else:
   205             form = SettingsForm(data=request.POST)
   203             form = SettingsForm(data=request.POST)
       
   204             if form.is_valid() :
       
   205                 form.save()
       
   206                 display_message(request, _(u'Settings saved'))
       
   207                 return HttpResponseRedirect(reverse('index'))
       
   208     else:
       
   209         form = SettingsForm()
       
   210     
       
   211     return render_to_response('site/settings.html', {'form' : form, 'help_links' : {'workspace_role_model':'role_model'}}, context_instance=RequestContext(request))
       
   212 
       
   213 class SettingsDesignForm(BaseSettingsForm):
       
   214     workspace_logo_file  = forms.FileField(label=ugettext_lazy("Workspace logo"),required=False)
       
   215     
       
   216     workspace_code = forms.CharField(label=ugettext_lazy("Workspace html code"),
       
   217                                      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.")),
       
   218                                      widget=forms.Textarea,
       
   219                                      required=False,
       
   220                                      )
       
   221 
       
   222     conf_fields = ['workspace_code']
       
   223     
       
   224     def save_file(self, logo_file):
       
   225         attach = Attachment.objects.create_attachment(filename='wp_logo', data=logo_file.read(), text_version=None)
       
   226         Configuration.objects.set_key('workspace_logo_file_key', attach.key)
       
   227         
       
   228     
       
   229 @has_global_perm('can_manage_workspace')
       
   230 def settings_design(request):
       
   231     if request.method == 'POST':
       
   232         if 'delete_logo' in request.POST:
       
   233             Configuration.objects.del_key('workspace_logo_file_key')
       
   234             display_message(request, _(u'Settings saved'))
       
   235             return HttpResponseRedirect(reverse('index'))            
       
   236         else:
       
   237             form = SettingsDesignForm(data=request.POST)
   206             if form.is_valid() :
   238             if form.is_valid() :
   207                 form.save()
   239                 form.save()
   208                 logo_file = request.FILES.get('workspace_logo_file',None)
   240                 logo_file = request.FILES.get('workspace_logo_file',None)
   209                 if logo_file:
   241                 if logo_file:
   210                     form.save_file(logo_file)
   242                     form.save_file(logo_file)
   211                 display_message(request, _(u'Settings saved'))
   243                 display_message(request, _(u'Settings saved'))
   212                 return HttpResponseRedirect(reverse('index'))
   244                 return HttpResponseRedirect(reverse('index'))
   213     else:
   245     else:
   214         form = SettingsForm()
   246         form = SettingsDesignForm()
   215     
   247     
   216     return render_to_response('site/settings.html', {'form' : form, 'help_links' : {'workspace_role_model':'role_model'}}, context_instance=RequestContext(request))
   248     return render_to_response('site/settings_design.html', {'form' : form}, context_instance=RequestContext(request))
   217 
   249     
   218 def help(request):
   250 def help(request):
   219     return render_to_response('site/help.html', context_instance=RequestContext(request))
   251     return render_to_response('site/help.html', context_instance=RequestContext(request))
   220 
   252