~unifield-team/unifield-web/trunk

« back to all changes in this revision

Viewing changes to addons/openerp/controllers/database.py

  • Committer: jf
  • Date: 2016-08-23 11:54:24 UTC
  • mfrom: (4794.6.5 web-us-1519)
  • Revision ID: jfb@tempo-consulting.fr-20160823115424-oiz4dm2jxia4b09h
US-1519 [IMP] Prevent browser to save password

lp:~jfb-tempo-consulting/unifield-web/us-1519

Show diffs side-by-side

added added

removed removed

Lines of Context:
50
50
    except:
51
51
        return []
52
52
 
 
53
class ReplacePasswordField(openobject.widgets.PasswordField):
 
54
    params = {
 
55
        'autocomplete': 'Autocomplete field',
 
56
    }
 
57
    autocomplete = 'off'
 
58
    replace_for = False
 
59
 
 
60
    def __init__(self, *arg, **kwargs):
 
61
        # disable form default submit action when user hits Enter in the field
 
62
        self.replace_for = kwargs['name']
 
63
        kwargs['name'] = 'show_%s' % kwargs['name']
 
64
        kwargs.setdefault('attrs', {}).update({
 
65
            'onkeydown': 'if (event.keyCode == 13) replace_pass_submit()',
 
66
            'class': 'requiredfield',
 
67
        })
 
68
        super(ReplacePasswordField, self).__init__(*arg, **kwargs)
 
69
 
 
70
 
53
71
class DBForm(openobject.widgets.Form):
54
72
    strip_name = True
55
73
 
56
74
    def __init__(self, *args, **kw):
57
75
        super(DBForm, self).__init__(*args, **kw)
 
76
        to_add = []
 
77
        for field in self.fields:
 
78
            if isinstance(field, ReplacePasswordField):
 
79
                to_add.append(openobject.widgets.HiddenField(name=field.replace_for, attrs={'autocomplete':'off'}))
 
80
                self.replace_password_fields[field.name] = field.replace_for
 
81
        if to_add:
 
82
            self.hidden_fields += to_add
58
83
        if self.validator is openobject.validators.DefaultValidator:
59
84
            self.validator = openobject.validators.Schema()
60
85
        for f in self.fields:
61
86
            self.validator.add_field(f.name, f.validator)
 
87
        for add in to_add:
 
88
            self.validator.add_field(add.name, formencode.validators.NotEmpty())
62
89
 
63
90
    def update_params(self, params):
64
91
        super(DBForm, self).update_params(params)
65
92
        params['attrs']['action'] = url(self.action)
66
93
 
 
94
    def error_for(self, item, error):
 
95
        if error and isinstance(item, ReplacePasswordField):
 
96
            return error.error_dict.get(item.replace_for)
 
97
        return super(DBForm, self).error_for(item, error)
 
98
 
67
99
class FormCreate(DBForm):
68
100
    name = "create"
69
101
    string = _('Create database')
71
103
    submit_text = _('Create')
72
104
    strip_name = True
73
105
    form_attrs = {'onsubmit': 'return on_create()'}
74
 
    fields = [openobject.widgets.PasswordField(name='password', label=_('Super admin password:'), validator=formencode.validators.NotEmpty(), help=_("This is the password of the user that have the rights to administer databases. This is not a OpenERP user, just a super administrator.")),
75
 
              openobject.widgets.TextField(name='dbname', label=_('New database name:'), validator=formencode.validators.NotEmpty(), help=_("Choose the name of the database that will be created. The name must not contain any special character. Exemple: 'terp'.")),
76
 
#              openobject.widgets.CheckBox(name='demo_data', label=_('Load Demonstration data:'), default=False, validator=validators.Bool(if_empty=False), help=_("Check this box if you want demonstration data to be installed on your new database. These data will help you to understand OpenERP, with predefined products, partners, etc.")),
77
 
              openobject.widgets.SelectField(name='language', options=get_lang_list, validator=validators.String(), label=_('Default Language:'), help=_("Choose the default language that will be installed for this database. You will be able to install new languages after installation through the administration menu.")),
78
 
              openobject.widgets.PasswordField(name='admin_password', label=_('Administrator password:'), validator=formencode.validators.NotEmpty(), help=_("This is the password of the 'admin' user that will be created in your new database.")),
79
 
              openobject.widgets.PasswordField(name='confirm_password', label=_('Confirm password:'), validator=formencode.validators.NotEmpty(), help=_("This is the password of the 'admin' user that will be created in your new database. It has to be the same than the above field."))
80
 
              ]
 
106
    fields = [
 
107
        ReplacePasswordField(name='password', label=_('Super admin password:'), help=_("This is the password of the user that have the rights to administer databases. This is not a OpenERP user, just a super administrator.")),
 
108
        openobject.widgets.TextField(name='dbname', label=_('New database name:'), validator=formencode.validators.NotEmpty(), help=_("Choose the name of the database that will be created. The name must not contain any special character. Exemple: 'terp'.")),
 
109
#       openobject.widgets.CheckBox(name='demo_data', label=_('Load Demonstration data:'), default=False, validator=validators.Bool(if_empty=False), help=_("Check this box if you want demonstration data to be installed on your new database. These data will help you to understand OpenERP, with predefined products, partners, etc.")),
 
110
        openobject.widgets.SelectField(name='language', options=get_lang_list, validator=validators.String(), label=_('Default Language:'), help=_("Choose the default language that will be installed for this database. You will be able to install new languages after installation through the administration menu.")),
 
111
        ReplacePasswordField(name='confirm_password', label=_('Confirm password:'), help=_("This is the password of the 'admin' user that will be created in your new database. It has to be the same than the above field.")),
 
112
        ReplacePasswordField(name='admin_password', label=_('Administrator password:'), help=_("This is the password of the 'admin' user that will be created in your new database.")),
 
113
    ]
81
114
    validator = openobject.validators.Schema(chained_validators=[formencode.validators.FieldsMatch("admin_password","confirm_password")])
82
115
 
 
116
 
83
117
class FormDrop(DBForm):
84
118
    name = "drop"
85
119
    string = _('Drop database')
86
120
    action = '/openerp/database/do_drop'
87
121
    submit_text = _('Drop')
88
122
    form_attrs = {'onsubmit': 'return window.confirm(_("Do you really want to drop the selected database?"))'}
89
 
    fields = [openobject.widgets.SelectField(name='dbname', options=get_db_list, label=_('Database:'), validator=validators.String(not_empty=True)),
90
 
              openobject.widgets.PasswordField(name='password', label=_('Drop password:'), validator=formencode.validators.NotEmpty())]
 
123
    fields = [
 
124
        openobject.widgets.SelectField(name='dbname', options=get_db_list, label=_('Database:'), validator=validators.String(not_empty=True)),
 
125
        ReplacePasswordField(name='password', label=_('Drop password:')),
 
126
    ]
91
127
 
92
128
class FormBackup(DBForm):
93
129
    name = "backup"
94
130
    string = _('Backup database')
95
131
    action = '/openerp/database/do_backup'
96
132
    submit_text = _('Backup')
97
 
    fields = [openobject.widgets.SelectField(name='dbname', options=get_db_list, label=_('Database:'), validator=validators.String(not_empty=True)),
98
 
              openobject.widgets.PasswordField(name='password', label=_('Backup password:'), validator=formencode.validators.NotEmpty())]
 
133
    fields = [
 
134
        openobject.widgets.SelectField(name='dbname', options=get_db_list, label=_('Database:'), validator=validators.String(not_empty=True)),
 
135
        ReplacePasswordField(name='password', label=_('Backup password:')),
 
136
    ]
99
137
 
100
138
class FileField(openobject.widgets.FileField):
101
139
    def adjust_value(self, value, **params):
106
144
    string = _('Restore database')
107
145
    action = '/openerp/database/do_restore'
108
146
    submit_text = _('Restore')
109
 
    fields = [FileField(name="filename", label=_('File:')),
110
 
              openobject.widgets.PasswordField(name='password', label=_('Restore password:'), validator=formencode.validators.NotEmpty()),
111
 
              openobject.widgets.TextField(name='dbname', label=_('New database name:'), validator=formencode.validators.NotEmpty(), readonly=1, attrs={'readonly': ''})]
 
147
    fields = [
 
148
        FileField(name="filename", label=_('File:')),
 
149
        ReplacePasswordField(name='password', label=_('Restore password:')),
 
150
        openobject.widgets.TextField(name='dbname', label=_('New database name:'), validator=formencode.validators.NotEmpty(), readonly=1, attrs={'readonly': ''})
 
151
    ]
 
152
 
112
153
    hidden_fields = [openobject.widgets.HiddenField(name='fpath', label=_('Path:'))]
113
154
 
114
155
class FormPassword(DBForm):
116
157
    string = _('Change Administrator Password')
117
158
    action = '/openerp/database/do_password'
118
159
    submit_text = _('Change Password')
119
 
    fields = [openobject.widgets.PasswordField(name='old_password', label=_('Old super admin password:'), validator=formencode.validators.NotEmpty()),
120
 
              openobject.widgets.PasswordField(name='new_password', label=_('New super admin password:'), validator=formencode.validators.NotEmpty()),
121
 
              openobject.widgets.PasswordField(name='confirm_password', label=_('Confirm Password:'), validator=formencode.validators.NotEmpty())]
122
 
 
 
160
    fields = [
 
161
        ReplacePasswordField(name='old_password', label=_('Old super admin password:')),
 
162
        ReplacePasswordField(name='new_password', label=_('New super admin password:')),
 
163
        ReplacePasswordField(name='confirm_password', label=_('Confirm Password:')),
 
164
    ]
123
165
    validator = openobject.validators.Schema(chained_validators=[formencode.validators.FieldsMatch("new_password","confirm_password")])
124
166
 
125
167