Any clue?

On Tue, Jun 21, 2016 at 10:51 AM, Richard <ml.richard.vez...@gmail.com>
wrote:

> As you which!!
>
> # Controllers
> Form 1
> def phone_numbers_form():
>     """
>     phone_numbers_form() allow to create/update/display phone(s) number(s).
>
>     Args (vars):
>         readonlyform: If set to "True" the function only display phones
> numbers in row, no create form and buttons
>                       to modify add phone number is available.
>         remove_phone_number_id: If phone number id is passed through url
> with this vars phone number specify id
>                                 record is deleted.
>         request_modify_phone_id: The passed phone number with this vars
> will make the phone_numbers_form() to return
>                                  an update form for the specified phone
> number id record.
>
>     """
>     user_id = None
>
>     # To display only the phone numbers
>     readonlyform = False
>     if request.vars.readonlyform:
>         if request.vars.readonlyform in ['True']:
>             readonlyform = True
>
>     if request.args(0) is not None:
>         try:
>             user_id = int(request.args(0))
>         except:
>             user_id = db(db.auth_user.username == request.args(0)).select(
> db.auth_user.id).first().id
>     if user_id is None:
>         user_id = auth.user_id
>     if request.vars.remove_phone_number_id is not None:
>         db(db.phone_number.id ==
> int(request.vars.remove_phone_number_id)).delete()
>     record_to_modify = request.vars.request_modify_phone_id
>     phone_numbers = db(db.phone_number.user_id == user_id).select()
>     db.phone_number.user_id.default = user_id
>     db.phone_number.user_id.update = user_id
>     if record_to_modify is None:
>         buttons = [
>             TAG.button(I('', _class='icon-ban-circle icon-large
> icon-white'), _type='button',
>
>  _onClick='web2py_component("%s","phone_number_component");' %
> URL(c='directory',
>
>                f='phone_numbers_form',
>
>                extension='load',
>
>                args=request.args(0)),
>                        _class='btn btn-mini btn-inverse'),
>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
> CAT('  '), STRONG(T('Add'))), _type='submit',
>                        _class='btn btn-mini btn-primary',
> _style='white-space: nowrap;')]
>     else:
>         buttons = [
>             TAG.button(I('', _class='icon-ban-circle icon-large
> icon-white'), _type='button',
>
>  _onClick='web2py_component("%s","phone_number_component");' %
> URL(c='directory',
>
>                f='phone_numbers_form',
>
>                extension='load',
>
>                args=request.args(0)),
>                        _class='btn btn-mini btn-inverse'),
>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
> CAT('  '), STRONG(T('Ok'))), _type='submit',
>                        _class='btn btn-mini btn-primary')]
>         # form.element(_type='submit')['_value'] = T('ok')
>         # form.element(_type='submit')['_class'] = 'btn btn-mini
> pull-right'
>     form = SQLFORM(db.phone_number, record=None if record_to_modify is
> None else int(record_to_modify),
>                    buttons=buttons if readonlyform is False else None,
>                    readonly=True if readonlyform is True else False,
>                    _id='phone_number_form_id')
>     if form.process(formname='phone_number_form').accepted:
>         if record_to_modify is not None:
>             response.flash = T('Successfully inserted')
>         else:
>             response.flash = T('Successfully updated')
>         response.js =
> 'web2py_component("%(URL)s","phone_number_component");' % {'URL':
> URL(c='directory',
>
>                   f='phone_numbers_form',
>
>                   extension='load',
>
>                   args=request.args(0))}
>     elif form.errors:
>         response.flash = T('Errors...')
>
>     #
> -----------------------------------------------------------------------------
>     # <script>
>     #     $(document).ready(function() {
>     #         var add_phone_number_translation = "{{=T('Add a phone
> number')}}"
>     #         $("tr#input_new_phone_number").children().hide();
>     #         $("tr#input_new_phone_number").append('<td colspan="3"
> id="new_phone_number"><button type="button" class="btn btn-small
> pull-right" onclick="$(\'tr#input_new_phone_number\').children().show();
> $(\'td#new_phone_number\').hide();"><strong>' +
> add_phone_number_translation + '</strong></button></td>');
>     #         });
>     # </script>
>     # What below is a replacement for the jQuery code above
>     if readonlyform is False:
>         controller_view_js = \
>
> common_functions.flash_message_from_js(tr_id='new_phone_number',
>                                                    colspan='3',
>                                                    button_text='Add a
> phone number',
>                                                    flash_text='Please add
> your phone number...',
>
>  form_id='phone_number_form_id')
>     else:
>         controller_view_js = ''
>     #
> -----------------------------------------------------------------------------
>
>     return dict(phone_numbers=phone_numbers,
>                 form=form,
>                 controller_view_js=controller_view_js,
>                 readonlyform=readonlyform)
>
>
> Form 2
>
> def group_membership():
>     if not auth.has_membership('admin'):
>         redirect(URL(c='permission', f='not_authorized'))
>     user_id = None
>     if request.args(0) is not None:
>         try:
>             user_id = int(request.args(0))
>         except ValueError:
>             user_id = db(db.auth_user.username == request.args(0)).select(
> db.auth_user.id).first().id
>     # if user_id is None:
>     #     user_id = auth.user_id  # Extrêmement douteux...
>     if request.vars.remove_membership_id is not None:
>         db(db.auth_membership.id ==
> int(request.vars.remove_membership_id)).delete()
>     record_to_modify = request.vars.request_modify_membership_id
>     memberships = db(db.auth_membership.user_id == user_id
>                      ).select(db.auth_membership.ALL,
>                               db.auth_group.ALL,
>                               join=db.auth_group.on(db.auth_group.id ==
> db.auth_membership.group_id),
>                               orderby=db.auth_group.role_gui)
>     db.auth_membership.user_id.default = user_id
>     db.auth_membership.user_id.update = user_id
>     #
> ------------------------------------------------------------------------------------------------------------------
>     # We don't need all the user id to be present in the drop down as
> group selected should apply to only a single user
>     #
> ------------------------------------------------------------------------------------------------------------------
>     user_id_set = db(db.auth_user.id == user_id)
>     db.auth_membership.user_id.requires = IS_IN_DB(user_id_set, '
> auth_user.id', '%(first_name)s %(last_name)s (%(id)s)')
>     #
> ------------------------------------------------------------------------------------------------------------------
>     #
> ------------------------------------------------------------------------------------------------------------------
>     # We don't need other user_X groups as the user can't be assign to
> other user group
>     #
> ------------------------------------------------------------------------------------------------------------------
>     groups_set = db(~db.auth_group.role.startswith('user_'))
>     db.auth_membership.group_id.requires = IS_IN_DB(groups_set, '
> auth_group.id', '%(role)s-%(description)s (%(id)s)')
>     #
> ------------------------------------------------------------------------------------------------------------------
>     if record_to_modify is None:
>         buttons = [
>             TAG.button(I('', _class='icon-ban-circle icon-large
> icon-white'), _type='button',
>
>  _onClick='web2py_component("%s","membership_component");' %
> URL(c='directory',
>
>                f='group_membership',
>
>                extension='load',
>
>                args=request.args(0)),
>                        _class='btn btn-mini btn-inverse'),
>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
> CAT('  '), STRONG(T('Add'))), _type='submit',
>                        _class='btn btn-mini btn-primary',
> _style='white-space: nowrap;')]
>     else:
>         buttons = [
>             TAG.button(I('', _class='icon-ban-circle icon-large
> icon-white'), _type='button',
>
>  _onClick='web2py_component("%s","membership_component");' %
> URL(c='directory',
>
>                f='group_membership',
>
>                extension='load',
>
>                args=request.args(0)),
>                        _class='btn btn-mini btn-inverse'),
>             TAG.button((I('', _class='icon-ok icon-large icon-white'),
> CAT('  '), STRONG(T('Ok'))), _type='submit',
>                        _class='btn btn-mini btn-primary')]
>         # form.element(_type='submit')['_value'] = T('ok')
>         # form.element(_type='submit')['_class'] = 'btn btn-mini
> pull-right'
>     form = SQLFORM(db.auth_membership, record=None if record_to_modify is
> None else int(record_to_modify),
>                    buttons=buttons, _id='membership_form_id')
>     if form.process(formname='membership_form').accepted:
>         if record_to_modify is None:
>             response.flash = T('Successfully inserted')
>         else:
>             response.flash = T('Successfully updated')
>         response.js =
> 'web2py_component("%(URL)s","membership_component");' % {'URL':
> URL(c='directory',
>
>                 f='group_membership',
>
>                 extension='load',
>
>                 args=request.args(0))}
>     elif form.errors:
>         response.flash = T('Errors...')
>
>     thead = THEAD(TR(TH(T('Role(s)'))))
>     trs = []
>     for r in memberships:
>         if request.vars.request_modify_membership_id is not None and \
>                 r.auth_membership.id ==
> int(request.vars.request_modify_membership_id):
>             trs.append(TR(TD(form.custom.widget.group_id,
>                              DIV(A(I('', _class='icon-ban-circle
> icon-large icon-white'),
>                                    _class='btn btn-mini btn-inverse',
>                                    _href=URL('group_membership',
> extension='load',
>                                              args=request.args(0)),
> cid=request.cid),
>                                  BUTTON(I('', _class='icon-ok icon-large
> icon-white'),
>                                         _class='btn btn-mini btn-primary',
>                                         _type='submit'),
>                                  _class='pull-right'))))
>         else:
>             trs.append(TR(TD(T(r.auth_group.role_gui),
>                              DIV(A(I('', _class='icon-edit icon-large'),
> _class='btn btn-mini',
>                                    _href=URL('group_membership',
> extension='load', args=request.args(0),
>
>  vars=dict(request_modify_membership_id=r.auth_membership.id)),
>                                    cid=request.cid),
>                                  A(I('', _class='icon-remove icon-large
> icon-white'), _class='btn btn-mini btn-danger',
>                                    _href=URL('group_membership',
> extension='load', args=request.args(0),
>
>  vars=dict(remove_membership_id=r.auth_membership.id)), cid=request.cid),
>                                  _class='pull-right'))))
>     if request.vars.request_modify_membership_id == None:
>         trs.append(TR(TD(form.custom.widget.group_id,
>                          SPAN(form.custom.widget.user_id, _style='display:
> none;'),  # There is an issue with this...
>
>            # NO form.vars.user_id available
>
>            # for update form!!
>                          SPAN(form.custom.submit, _class='pull-right')),
> _id='input_new_membership'))
>     memberships_table = TABLE(thead, TBODY(*trs), _class='table
> table-condensed table-hover')
>
>     #
> -----------------------------------------------------------------------------
>     # $(document).ready(function() {
>     #     var add_membership_translation = '{{=T('Add membership')}}'
>     #     $("tr#input_new_membership").children().hide();
>     #     $("tr#input_new_membership").append('<td colspan="3"
> id="new_membership"><button type="button" class="btn btn-small pull-right"
> onclick="$(\'tr#input_new_membership\').children().show();
> $(\'td#new_membership\').hide();"><strong>' + add_membership_translation +
> '</strong></button></td>');
>     #     });
>     # What below is a replacement for the jQuery code above
>     controller_view_js = \
>         common_functions.flash_message_from_js(tr_id='new_membership',
>                                                colspan='3',
>                                                button_text='Add
> membership',
>                                                flash_text='Please select a
> role...',
>
>  form_id='membership_form_id')
>     #
> -----------------------------------------------------------------------------
>
>     return dict(memberships_table=memberships_table, form=form,
> controller_view_js=controller_view_js)
>
> Container page controller
> @auth.requires_login()
> def manage_users():
>     if not auth.has_membership('manage_users'):
>         redirect(URL(c='permission', f='not_authorized'))
>     if request.args(0) is not None:
>         try:
>                 user_id = int(request.args(0))
>         except ValueError:
>             user_id = db(db.auth_user.username == request.args(0)).select(
> db.auth_user.id).first().id
>     else:
>         user_id = None
>         db.auth_user.address_id.requires = \
>             IS_EMPTY_OR(IS_IN_DB(db, db.address.id, '%(address_code)s -
> %(door_number)s, %(street)s'))
>         db.auth_user.initials.requires = \
>             IS_EMPTY_OR(IS_NOT_IN_DB(db, 'auth_user.initials',
> error_message=T('Initials already exist!')))
>         db.auth_user.password.requires =
> IS_EMPTY_OR(CRYPT(min_length=auth.settings.password_min_length,
>
>  error_message=T('too short')))
>
>     for field in db.auth_user.fields:
>         db.auth_user[field].readable = False
>         db.auth_user[field].writable = False
>     fields = (db.auth_user.first_name,
>               db.auth_user.last_name,
>               db.auth_user.address_id,
>               db.auth_user.email,
>               db.auth_user.initials,
>               db.auth_user.title_fr,
>               db.auth_user.title_en,
>               db.auth_user.manager_id,
>               db.auth_user.gender,
>               db.auth_user.registration_key,
>               db.auth_user.picture)
>     for field in fields:
>         field.readable = True
>         field.writable = True
>     db.auth_user.registration_key.requires =
> IS_EMPTY_OR(IS_IN_SET(['pending', 'disabled']))
>     db.auth_user.registration_key.default = 'pending'
>     buttons = [TAG.button((I('', _class='icon-ban-circle icon-large
> icon-white'), CAT('  '), STRONG(T('Cancel'))),
>                           _type='button',
>                           _onClick="javascript:void(history.go(-1))",
>                           _class='btn btn-small btn-inverse'),
>                TAG.button((I('', _class='icon-ok icon-large icon-white'),
> CAT('  '), STRONG(T('Update'))),
>                           _type='submit',
>                           _class='btn btn-small btn-primary')]
>     form = SQLFORM(db.auth_user, record=user_id, buttons=buttons,
> formstyle=formstyle, separator=separator)
>     if form.process(dbio=False).accepted:
>         if user_id is None:
>             session.flash = T('User created')
>             form.vars.ceo = False
>             form.vars.note = ''
>             if form.vars.email is not None:
>                 form.vars.username = form.vars.email.split('@')[0]
>             id = db.auth_user.insert(**{str(var): form.vars[var] for var
> in form.vars})
>             user_id_role_exist = db(db.auth_group.role == 'user_%d' %
> id).count() == 1
>             if user_id_role_exist is False:
>                 db.auth_group.insert(role='user_%d' % id,
> description='Individual user group user_ + user id',
>                                      role_gui=form.vars.username)
>             member_of_basic_access_group = \
>                 db((db.auth_membership.user_id == id) &
>                    (db.auth_membership.group_id == db(db.auth_group.role
> == 'basic_access'
>                                                       ).select(
> db.auth_group.id).first().id)
>                    ).count() == 1
>             if member_of_basic_access_group is False:
>                 db.auth_membership.insert(user_id=id,
>                                           group_id=db(db.auth_group.role
> == 'basic_access'
>                                                       ).select(
> db.auth_group.id).first().id)
>             # Push new user into Redmine
>             redmine_utility.push_active_user_into_redmine(db=db)
>         else:
>             session.flash = T('User updated')
>             db(db.auth_user.id == user_id).update(**{str(var):
> form.vars[var] for var in form.vars})
>
>         if form.vars.title_fr is not None and form.vars.title_fr != '' \
>                 and form.vars.title_en is not None and form.vars.title_en
> != '':
>
> common_functions.value_translation_update(en_field_name='title_en',
> fr_field_name='title_fr', form=form)
>         if request.args(0) is not None:
>             username = request.args(0)
>         elif form.vars.username is not None:
>             username = form.vars.username
>         else:
>             username = None
>         redirect(URL(c='directory', f='employee', args=username))
>     elif form.errors:
>         response.flash = T('Form has error')
>     else:
>         response.flash = T('Please complete or update the form')
>     return dict(form=form)
>
>
>
>
>
> # View ".load"
> Form 1
> <strong>{{=T('Phone numbers')}}</strong>
> {{=form.custom.begin}}
> <table class="table table-condensed table-hover">
>     <tbody>
>         {{for phone_number in phone_numbers:}}
>             <tr>
>                 {{if request.vars.request_modify_phone_id is not None and
> phone_number.id == int(request.vars.request_modify_phone_id):}}
>                     <td>{{=form.custom.widget.phone_number_kind_id}}</td>
>                     <td>{{=form.custom.widget.phone_number}}</td>
>                     <td>
>                         <span style="display:
> none;">{{=form.custom.widget.user_id}}</span>
>                         {{=form.custom.widget.extension}}
>                         <div class="pull-right">
>                         {{=A(I('', _class='icon-ban-circle icon-white'),
> _class='btn btn-mini btn-inverse',
>                              _href=URL('phone_numbers_form',
> extension='load', args=request.args(0)), cid=request.cid)}}
>                         {{=BUTTON(I('', _class='icon-ok icon-white'),
> _class='btn btn-mini btn-primary', _type='submit')}}
>                         </div>
>                     </td>
>                 {{else:}}
>
> <td>{{=db.phone_number_kind[phone_number.phone_number_kind_id].phone_number_kind}}</td>
>                     <td>{{=phone_number.phone_number}}</td>
>                     <td>
>                         {{if phone_number.extension is not None and
> phone_number.extension != '':}}
>                             ({{=phone_number.extension}})
>                         {{pass}}
>                         {{if readonlyform is False:}}
>                             <div class="pull-right">
>                             {{=A(I('',_class='icon-edit'), _class='btn
> btn-mini',
>                                  _href=URL('phone_numbers_form',
> extension='load', args=request.args(0),
>
>  vars=dict(request_modify_phone_id=phone_number.id)), cid=request.cid)}}
>                             {{=A(I('',_class='icon-remove icon-white'),
> _class='btn btn-mini btn-danger',
>                                  _href=URL('phone_numbers_form',
> extension='load', args=request.args(0),
>
>  vars=dict(remove_phone_number_id=phone_number.id)), cid=request.cid)}}
>                             </div>
>                         {{pass}}
>                     </td>
>                 {{pass}}
>             </tr>
>         {{pass}}
>         {{if readonlyform is False:}}
>             {{if request.vars.request_modify_phone_id == None:}}
>                 <tr id="input_new_phone_number">
>                     <td>{{=form.custom.widget.phone_number_kind_id}}</td>
>                     <td>{{=form.custom.widget.phone_number}}</td>
>                     <td>{{=form.custom.widget.extension}}
>                         <span style="display:
> none;">{{=form.custom.widget.user_id}}</span>
>                         <span
> class='pull-right'>{{=form.custom.submit}}</span>
>                     </td>
>                 </tr>
>             {{pass}}
>         {{pass}}
>     </tbody>
> </table>
> {{=form.custom.end}}
>
> <script>
>     {{=XML(controller_view_js)}}
> </script>
>
>
>
> Form 2
> <strong>{{=T('User membership')}}</strong>
> {{=form.custom.begin}}
>     {{=memberships_table}}
> {{=form.custom.end}}
>
> <script>
>     {{=XML(controller_view_js)}}
> </script>
>
>
> Container page
> {{extend 'layout_form.html'}}
>
>     <div class="span4">
>         <div class="thumbnail">
>             <div>
>                 {{=form}}
>             </div>
>         </div>
>     </div>
>     {{if request.args(0) is not None:}}
>         <div class="span6">
>             <div class="thumbnail">
>                 <div>
>                     {{=LOAD(c='directory', f='phone_numbers_form',
> extension='load',
>                             args=request.args(0), ajax=True,
> target='phone_number_component')}}
>                 </div>
>             </div>
>         </div>
>         {{if auth.has_membership('admin') and request.args(0) is not
> None:}}
>             <div class="span6">
>                 <div class="thumbnail">
>                     <div>
>                         {{=LOAD(c='directory', f='group_membership',
> extension='load',
>                                 args=request.args(0), ajax=True,
> target='membership_component')}}
>                     </div>
>                 </div>
>             </div>
>         {{pass}}
>     {{pass}}
>
>
>
>
> # modules JS generation snippet
> def flash_message_from_js(tr_id, colspan, button_text, flash_text,
> form_id=None):
>     """
>     Set flash message with $.web2py.flash() so the flash message get fire
> in the right context
>     Need this in view :
>
>     <script>
>         {{=XML(controller_view_js)}}
>     </script>
>
>     NOTE: We now generate this piece of JS from python to solve issue with
> quoting escape cause by to many single
>           and double quotes. The code breaks when whe translate "Please
> fill out the form..." with
>           "S'il vous plaît remplir le formulaire..." the single quote were
> not escape properly with the Javascript
>           implementation.
>     NOTE: The issue has multiple facet... Mainly the issue is related to
> the fact that we want to translate flash
>           message and for this reason we need to generate JS at some level
> from python even if it only the content of
>           a string variable. Then since we need to generating also HTML
> from Javascript it makes multiple level of
>           abstraction and a lot of quoting... When you add over all that
> there is single quote using in the translated
>           text and that we deal with byte (python str) and not unicode...
> That were you end up...
>
>           :param colspan:
>           :param tr_id:
>           :param flash_text:
>           :param button_text:
>     """
>     elements_to_be_added = \
>         TD(TAG.button(STRONG(current.T(button_text).decode('utf8')),
>                       _type='button',
>                       _class='btn btn-small pull-right',
>                       _onclick='$("tr#input_%s").children().show(); '
>                                '$("td#%s").hide(); '
>                                '$.web2py.flash("%s");' % (tr_id, tr_id,
> current.T(flash_text).decode('utf8'))),
>            _colspan=colspan,
>            _id=tr_id)
>
>     controller_view_js = \
>         '''$(document).ready(function() {
>             if(!$('#%s .error').length) {
>                 $("tr#input_%s").children().hide();
>                 $("tr#input_%s").append('%s');
>                 }
>             });''' % (form_id, tr_id, tr_id, elements_to_be_added)
>     #
> -----------------------------------------------------------------------------
>     return controller_view_js
>
>
>
>
> You have everything...
>
> --
> Resources:
> - http://web2py.com
> - http://web2py.com/book (Documentation)
> - http://github.com/web2py/web2py (Source code)
> - https://code.google.com/p/web2py/issues/list (Report Issues)
> ---
> You received this message because you are subscribed to the Google Groups
> "web2py-users" group.
> To unsubscribe from this group and stop receiving emails from it, send an
> email to web2py+unsubscr...@googlegroups.com.
> For more options, visit https://groups.google.com/d/optout.
>

-- 
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
--- 
You received this message because you are subscribed to the Google Groups 
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to web2py+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to