Esempio n. 1
0
    def _wizcb_submit_hdl(wiz, em, step, act, val, req):
        xcls = cls
        if isinstance(xcls, str):
            xcls = _name_to_class(xcls)

        sess = DBSession()

        fieldIDs = json.loads(val['field_id'])
        templateName = val['template']
        templId = val['templ_id']

        for fid in fieldIDs:
            resvalue = {
                'templ_id':
                templId,
                'field_id':
                fid,
                'template':
                templateName,
                'field':
                sess.query(PDNSFieldType).filter(
                    PDNSFieldType.id == fid).first()
            }
            em = ExtModel(xcls)
            obj = xcls()
            em.set_values(obj, resvalue, req, True)
            sess.add(obj)
            sess.flush()
            print("TROLOLO")
        return {'do': 'close', 'reload': True}
Esempio n. 2
0
 def get_cfg(self, model, req, **kwargs):
     if isinstance(self.model, str):
         self.model = ExtModel(_name_to_class(self.model))
     ret = []
     col = self.model.get_column(self.field)
     colfld = col.get_editor_cfg(req, in_form=True, initval=self.value)
     if colfld:
         colfld['name'] = self.name
         coldef = col.default(req)
         if (kwargs.get('use_defaults',
                        False)) and (coldef
                                     is not None) and (not self.value):
             colfld['value'] = coldef
         if self.extra_config:
             colfld.update(self.extra_config)
         ret = [colfld]
         extra = col.append_field()
         while extra:
             ecol = self.model.get_column(extra)
             ecolfld = ecol.get_editor_cfg(req,
                                           in_form=True,
                                           initval=self.value)
             if ecolfld:
                 ecoldef = ecol.default(req)
                 if (kwargs.get('use_defaults', False)) and (
                         ecoldef is not None) and (not self.value):
                     ecolfld['value'] = ecoldef
                 ret.append(ecolfld)
                 extra = ecol.append_field()
             else:
                 break
         return ret
Esempio n. 3
0
def dyn_ticket_uwiz_update(params, request):
    tid = int(params['ticketid'])
    del params['ticketid']
    sess = DBSession()
    model = ExtModel(Ticket)
    ticket = sess.query(Ticket).get(tid)
    if ticket is None:
        raise KeyError('Invalid ticket ID')

    for param in ('tstid', 'toid', 'name', 'descr'):
        if param in params:
            del params[param]

#	TODO: ENTITIES_LIST
    if not request.has_permission('TICKETS_CHANGE_STATE'):
        if 'ttrid' in params:
            del params['ttrid']
    if not request.has_permission('TICKETS_CHANGE_FLAGS'):
        if 'flags' in params:
            del params['flags']


#	TODO: USERS_LIST
#	TODO: GROUPS_LIST

    sess.execute(SetVariable('ticketid', ticket.id))
    if 'ttrid' in params:
        ttr_id = params['ttrid']
        if ttr_id:
            ttr_id = int(ttr_id)
            trans = sess.query(TicketStateTransition).get(ttr_id)
            if trans:
                sess.execute(SetVariable('ttrid', trans.id))
                trans.apply(ticket)
        del params['ttrid']
    if 'show_client' in params:
        show_cl = params['show_client'].lower()
        if show_cl in {'true', '1', 'on'}:
            show_cl = True
        else:
            show_cl = False
        del params['show_client']
    else:
        show_cl = False
    sess.execute(SetVariable('show_client', npbool(show_cl)))
    if ('comments' in params) and request.has_permission(
            'TICKETS_COMMENT', request.context, request):
        sess.execute(SetVariable('comments', params['comments']))
        del params['comments']
    else:
        sess.execute(SetVariable('comments', None))
    model.set_values(ticket, params, request)
    sess.flush()
    sess.execute(SetVariable('tcid', None))
    return {'success': True, 'action': {'do': 'close', 'redraw': []}}
Esempio n. 4
0
	def _wizcb_aent_submit(wiz, em, step, act, val, req):
		sess = DBSession()
		em = ExtModel(AccessEntity)
		obj = AccessEntity()
		# Work around field name clash
		if 'state' in val:
			del val['state']
		em.set_values(obj, val, req, True)
		sess.add(obj)
		return {
			'do'     : 'close',
			'reload' : True
		}
Esempio n. 5
0
def dyn_ticket_uwiz(params, request):
    tid = int(params['ticketid'])
    sess = DBSession()
    loc = request.localizer
    trans = [{
        'name':
        'ttrid',
        'boxLabel':
        '<div class="np-xradiolabel"><div class="title">%s</div>%s</div>' %
        (html_escape(loc.translate(_('No changes')), True),
         html_escape(loc.translate(_('Do not change ticket state.')), True)),
        'inputValue':
        '',
        'checked':
        True
    }]
    ticket = sess.query(Ticket).get(tid)
    if ticket is None:
        raise KeyError('Invalid ticket ID')
    model = ExtModel(Ticket)
    ch_model = ExtModel(TicketChange)
    fields = []
    if request.has_permission('ENTITIES_LIST'):
        fields.append(
            ExternalWizardField(
                model,
                'entity',
                value=ticket.entity,
                extra_config={
                    'readOnly':
                    not bool(request.has_permission('TICKETS_CHANGE_ENTITY'))
                }))
    if request.has_permission('TICKETS_CHANGE_STATE'):
        for tr in ticket.state.transitionmap_to:
            label = '<div class="np-xradiolabel"><div class="title">%s</div>%s</div>' % (
                html_escape(tr.name, True),
                html_escape((tr.description if tr.description else ''), True))
            trans.append({
                'name': 'ttrid',
                'boxLabel': label,
                'inputValue': tr.id
            })
        fields.append(
            ExtJSWizardField({
                'xtype': 'radiogroup',
                'fieldLabel': loc.translate(_('Transition')),
                'vertical': True,
                'columns': 1,
                'items': trans
            }))
    if request.has_permission('TICKETS_CHANGE_FLAGS'):
        fields.append(ExternalWizardField(model, 'flags', value=ticket.flags))
    if request.has_permission('USERS_LIST'):
        fields.append(
            ExternalWizardField(
                model,
                'assigned_user',
                value=ticket.assigned_user,
                extra_config={
                    'readOnly':
                    not bool(request.has_permission('TICKETS_CHANGE_UID'))
                }))
    if request.has_permission('GROUPS_LIST'):
        fields.append(
            ExternalWizardField(
                model,
                'assigned_group',
                value=ticket.assigned_group,
                extra_config={
                    'readOnly':
                    not bool(request.has_permission('TICKETS_CHANGE_GID'))
                }))
    fields.extend(
        (ExternalWizardField(model, 'ticketid', value=ticket.id),
         CompositeWizardField(
             ExternalWizardField(
                 model,
                 'assigned_time',
                 value=ticket.assigned_time,
                 extra_config={
                     'readOnly':
                     not bool(request.has_permission('TICKETS_CHANGE_DATE'))
                 }),
             ExtJSWizardField({
                 'xtype': 'button',
                 'text': 'Schedule',
                 'iconCls': 'ico-schedule',
                 'margin': '0 0 0 2',
                 'itemId': 'btn_sched'
             })),
         ExternalWizardField(
             model,
             'archived',
             value=ticket.archived,
             extra_config={
                 'readOnly':
                 not bool(request.has_permission('TICKETS_ARCHIVAL'))
             }), ExternalWizardField(ch_model, 'show_client', value=False)))
    if request.has_permission('TICKETS_COMMENT'):
        fields.append(ExternalWizardField(ch_model, 'comments'))
    wiz = Wizard(Step(*fields), title=_('Update ticket'))
    ret = {
        'success': True,
        'fields': wiz.get_cfg(model, request, use_defaults=True)
    }
    return ret