# HG changeset patch # User Pawel Solyga # Date 1222793394 0 # Node ID d020c95b17b174d6ad0cee8b4cbd0314311a4383 # Parent 21f94815fc8561af485453f5725d62f97ec797ab Clean up too long lines in profile.py. Add ReadOnlyInput widget to custom_widgets module, it can be used to display read-only form fields. Display read-only "Id" field in LookUp view if user has been found and in User Edit Developer view. Patch by: Pawel Solyga Review by: to-be-reviewed diff -r 21f94815fc85 -r d020c95b17b1 app/soc/templates/soc/site/user/profile/edit.html --- a/app/soc/templates/soc/site/user/profile/edit.html Tue Sep 30 16:26:30 2008 +0000 +++ b/app/soc/templates/soc/site/user/profile/edit.html Tue Sep 30 16:49:54 2008 +0000 @@ -38,6 +38,9 @@
{{ form.key_name }} + {% if existing_user %} + {% readonly_field_as_table_row "Id" existing_user.id %} + {% endif %} {% field_as_table_row form.id %} {% if lookup_error %} diff -r 21f94815fc85 -r d020c95b17b1 app/soc/templates/soc/site/user/profile/lookup.html --- a/app/soc/templates/soc/site/user/profile/lookup.html Tue Sep 30 16:26:30 2008 +0000 +++ b/app/soc/templates/soc/site/user/profile/lookup.html Tue Sep 30 16:49:54 2008 +0000 @@ -28,6 +28,9 @@

+{% if found_user %} +{% readonly_field_as_table_row "Id" found_user.id %} +{% endif %} {% if email_error %} diff -r 21f94815fc85 -r d020c95b17b1 app/soc/views/helpers/custom_widgets.py --- a/app/soc/views/helpers/custom_widgets.py Tue Sep 30 16:26:30 2008 +0000 +++ b/app/soc/views/helpers/custom_widgets.py Tue Sep 30 16:49:54 2008 +0000 @@ -28,49 +28,62 @@ from django.utils import simplejson from django.utils.safestring import mark_safe -class TinyMCE(forms.widgets.Textarea): - """TinyMCE widget. - - Requires to include tiny_mce_src.js in your template. Widget can be - customized by overwriting or adding extra options to mce_settings - dictionary + +class ReadOnlyInput(forms.widgets.Input): + """Read only input widget. + """ + input_type = 'text' + + def render(self, name, value, attrs=None): + """Render ReadOnlyInput widget as HTML. + """ + attrs['readonly'] = 'readonly' + return super(ReadOnlyInput, self).render(name, value, attrs) + - You can set TinyMCE widget for particular form field using code below: - class ExampleForm(forms_helpers.DbModelForm): - content = forms.fields.CharField(widget=custom_widgets.TinyMCE()) - - You can include tiny_mce_src.js in your template using: - {% block scripts %} - - {% endblock %} - """ - DEF_MCE_SETTINGS = { 'mode': "exact", - 'theme': "simple", - 'theme_advanced_toolbar_location': "top", - 'theme_advanced_toolbar_align': "center"} +class TinyMCE(forms.widgets.Textarea): + """TinyMCE widget. + + Requires to include tiny_mce_src.js in your template. Widget can be + customized by overwriting or adding extra options to mce_settings + dictionary - mce_settings = DEF_MCE_SETTINGS.copy() + You can set TinyMCE widget for particular form field using code below: + class ExampleForm(forms_helpers.DbModelForm): + content = forms.fields.CharField(widget=custom_widgets.TinyMCE()) + + You can include tiny_mce_src.js in your template using: + {% block scripts %} + + {% endblock %} + """ + DEF_MCE_SETTINGS = { 'mode': "exact", + 'theme': "simple", + 'theme_advanced_toolbar_location': "top", + 'theme_advanced_toolbar_align': "center"} - TINY_MCE_HTML_FMT = u'''\ + mce_settings = DEF_MCE_SETTINGS.copy() + + TINY_MCE_HTML_FMT = u'''\ ''' + + def render(self, name, value, attrs=None): + """Render TinyMCE widget as HTML. + """ + if value is None: + value = '' + value = smart_unicode(value) + final_attrs = self.build_attrs(attrs, name=name) - def render(self, name, value, attrs=None): - """Render TinyMCE widget as HTML. - """ - if value is None: - value = '' - value = smart_unicode(value) - final_attrs = self.build_attrs(attrs, name=name) + self.mce_settings['elements'] = "id_%s" % name - self.mce_settings['elements'] = "id_%s" % name - - # convert mce_settings from dict to JSON - mce_json = simplejson.JSONEncoder().encode(self.mce_settings) + # convert mce_settings from dict to JSON + mce_json = simplejson.JSONEncoder().encode(self.mce_settings) - return mark_safe(self.TINY_MCE_HTML_FMT % - {'attrs': flatatt(final_attrs), - 'value': escape(value), - 'settings_json': mce_json}) + return mark_safe(self.TINY_MCE_HTML_FMT % + {'attrs': flatatt(final_attrs), + 'value': escape(value), + 'settings_json': mce_json}) diff -r 21f94815fc85 -r d020c95b17b1 app/soc/views/site/user/profile.py --- a/app/soc/views/site/user/profile.py Tue Sep 30 16:26:30 2008 +0000 +++ b/app/soc/views/site/user/profile.py Tue Sep 30 16:49:54 2008 +0000 @@ -146,7 +146,7 @@ # else: # method == 'GET' if user: - # User entity found, so populate form with existing User information + # User entity found, so populate form with existing User information # context['found_user'] = user form = LookupForm(initial={'id': user.id.email, 'link_name': user.link_name}) @@ -298,7 +298,7 @@ # populate form with the existing User entity form = EditForm(initial={ 'key_name': user.key().name(), 'id': user.id.email, 'link_name': user.link_name, - 'nick_name': user.nick_name, 'is_developer': user.is_developer}) + 'nick_name': user.nick_name, 'is_developer': user.is_developer}) else: if request.GET.get(profile.SUBMIT_MSG_PARAM_NAME): # redirect to aggressively remove 'Profile saved' query parameter