def add_new(self, content, refresh): # Add new entry c_id, c_type = get_id_and_type(content) url = '%s/%s' % (URL_APPLY, c_type) roles = [ "Administrator", "Ingestador", "Editor", "Publicador", "Consumidor" ] role_options = [(None, 'Todos')] + [(Role.name_to_role(x), x) for x in roles] user_options = [(None, 'Todos')] + Auth.get_users() entries = [ CTK.RawHTML(''), CTK.Checkbox({ 'name': "ad", 'checked': False, 'class': 'required' }), CTK.Checkbox({ 'name': "ed", 'checked': False, 'class': 'required' }), CTK.Checkbox({ 'name': "rm", 'checked': False, 'class': 'required' }), CTK.Checkbox({ 'name': "co", 'checked': False, 'class': 'required' }), CTK.Combobox({ 'name': 'role', 'class': 'required' }, role_options), CTK.Combobox({ 'name': 'user_id', 'class': 'required' }, user_options) ] self.table[(self.n, 1)] = entries + [CTK.SubmitterButton('Enviar')] self.n += 1 form = CTK.Submitter(url) form += self.table form += CTK.HiddenField({'name': 'type', 'value': c_type}) form += CTK.HiddenField({'name': 'id', 'value': c_id}) form.bind('submit_success', refresh.JS_to_refresh()) self += form
def __init__(self, props={}, options=[], option_renders={}): CTK.Container.__init__(self) self.props = props.copy() # Option View box = CTK.Box({'id': 'info_%s' % self.id, 'class': 'no-see part_info'}) # TextField widget text_props = self.props.copy() text_props['class'] = '%s two_fields' % (text_props.get('class', '')) text = CTK.TextField(text_props) # Combowidget combo_props = self.props.copy() combo_props['name'] = "%s_combo" % (props['name']) combo = CTK.Combobox(combo_props, options) combo.bind('change', APPEND_JS % (text.id, text.id, combo.id)) combo.bind('change', OPTIONS_JS % (str(option_renders), box.id, combo.id)) # Chooser table = CTK.Table() table[(1, 1)] = text table[(1, 2)] = CTK.RawHTML(" ") table[(1, 3)] = combo self += table self += box
def __init__ (self, vsrv, rule, apply_orig): CTK.Container.__init__ (self) pre = 'vserver!%s!rule!%s' %(vsrv, rule) apply_url = '%s/header_op'%(apply_orig) # Operation Table refresh = CTK.Refreshable({'id': 'header_op'}) refresh.register (lambda: HeaderOps.OpsTable(pre, apply_orig, refresh).Render()) self += CTK.RawHTML ("<h2>%s</h2>" % (_('Header Operations'))) self += CTK.Indenter (refresh) # New Entries tipe = CTK.Combobox ({'name': 'new_header_op_type', 'class': 'noauto'}, HEADER_OP_OPTIONS) header = CTK.TextField ({'name': 'new_header_op_name', 'class': 'noauto'}) value = CTK.TextField ({'name': 'new_header_op_value', 'class': 'noauto'}) button = CTK.SubmitterButton (_('Add')) table = CTK.Table() table.set_header (num=1) table += [CTK.RawHTML(x) for x in (_('Action'), _('Header'), _('Value'))] table += [tipe, header, value, button] # Manage 3rd column selector = ','.join (['#%s'%(row[3].id) for row in table]) tipe.bind('change', "if ($(this).val()=='add'){ $('%s').show(); }else{ $('%s').hide();}" %(selector, selector)) submit = CTK.Submitter (apply_url) submit.bind ('submit_success', refresh.JS_to_refresh()) submit += table self += CTK.RawHTML ('<h3>%s</h3>'%(_('Add New Header'))) self += CTK.Indenter (submit)
def __init__ (self): CTK.Box.__init__ (self, {'id': 'language-selector'}) languages = [('', _('Choose'))] + trans_options(AVAILABLE_LANGUAGES) submit = CTK.Submitter('/lang/apply') submit.id = 'language-list' # TODO: Maybe it's better to show selected lang and ommit 'Language' label. submit += CTK.Combobox ({'name': 'lang'}, languages) self += CTK.RawHTML('%s: ' %(_('Language'))) self += submit
def __init__ (self): a = CTK.PropsAuto ('/apply') a.Add ('To upcase', CTK.TextField({'name': "server!uno"}), 'Converts the content of the field to upcase') a.Add ('Shows error', CTK.TextField({'name': "server!dos"}), 'It shows an error, it does not matter what you write') a.Add ('Delay 2secs', CTK.TextField({'name': "server!tri"}), 'It delays response for 2 seconds, so the submitting message is shown') a.Add ('Active', CTK.Checkbox ({'name': "server!active", 'checked':1}), 'It\'s just a plain checkbox. Nothing to see here') b = CTK.PropsAuto ('/apply') b.Add ('Elige', CTK.Combobox ({'name': "server!elec", 'selected': "two"}, OPTIONS), 'la lista') b.Add ('iPhone', CTK.iPhoneToggle({'name': "server!off"}), 'Fancy') b.Add ('Carga', CTK.Proxy("www.cherokee-project.com", '/dynamic/cherokee-list.html'), 'Lista') self.tab = CTK.Tab() self.tab.Add('Primero', a) self.tab.Add('Segundo', b)
def __get_new_format_form(): q = 'SELECT format FROM formats;' query = Query(q) current = [] if len(query) > 0: current = [query[x]['format'] for x in query] options = [('', '--')] options += [(x, x) for x in Format.FORMATS if x not in current] table = CTK.PropsTable() table.Add('Formato', CTK.Combobox({'name': 'format'}, options), 'Nombre del formato') form = CTK.Submitter("%s/new/apply" % LOCATION) form += table return form
def build(self): rrd = self.build_graph() if rrd: props = { 'class': 'graph_type', 'name': 'graph_type', 'selected': self.graph['type'] } combo = CTK.Combobox(props, trans_options(GRAPH_TYPES)) submit = CTK.Submitter(URL_APPLY) submit += combo submit.bind('submit_success', self.refresh.JS_to_refresh()) for x in GRAPH_TYPES: if x[0] == self.graph['type']: self.graph['type_txt'] = x[1] self += submit
def __get_new_targets_table(format_id): q_formats = "SELECT id, format FROM formats WHERE id != %(format_id)s;" % locals( ) q_current = "SELECT id,format FROM transcode_targets "\ "JOIN formats ON target_id = id WHERE source_id = '%(format_id)s';" % locals() q_name = "SELECT * FROM formats WHERE id = %(format_id)s;" % locals() formats_query = Query(q_formats) current_query = Query(q_current) format_name = Query(q_name)['format'][0] formats, current_targets = {}, [] for x in formats_query: formats[formats_query[x]['format']] = formats_query[x]['id'] if len(current_query) > 0: current_targets = [current_query[x]['format'] for x in current_query] targets = [(formats[x], x) for x in formats.keys() if x not in current_targets] if format_name in Format.AV: targets = [(value, label) for value, label in targets if label in Format.AV] else: targets = [(value, label) for value, label in targets if label in Format.IMG] if len(targets) == 0: return None options = [('', '--')] + targets table = CTK.PropsAuto('%s/edit/apply' % LOCATION) table.AddConstant('formatid', format_id) table.Add('Objetivo', CTK.Combobox({'name': 'target'}, options), 'Destino de la transcodificación') return table
def edit_asset(): # Authentication fail = Auth.assert_is_role(Role.ROLE_EDITOR) if fail: return fail asset_id = CTK.request.url.split('/')[-1] acl = ACL() editable = acl.filter_assets("ed", [asset_id]) if not int(asset_id) in editable: return CTK.HTTP_Error(401) asset = Asset(asset_id) q = "SELECT * "\ "FROM assets WHERE id = '%(asset_id)s';" %(locals()) # Prevent simultaneous editions editor_id = int(Auth.get_user_id()) try: strp = time.strptime(asset['date_modified'], '%Y-%m-%d %H:%M:%S') edit_ts = int(time.mktime(strp)) except (ValueError, TypeError): edit_ts = 0 # Edition during edition-window is only allowed to the current editor. if time.time() - edit_ts < EDIT_WINDOW and asset['editor_id'] != editor_id: page = Page.Default() page += CTK.RawHTML("<h1>%s: Editar activo</h1>" % (MENU_LINK)) page += CTK.RawHTML( "<h2>El activo está siendo editado actualmente</h2>") return page.Render() # Mark it as 'being edited' asset['date_modified'] = "CURRENT_TIMESTAMP()" asset['editor_id'] = editor_id oa = OpAsset(asset) rc = oa.update() asset = Asset(asset_id) lang = asset['language'] languages = CTK.Combobox( { 'name': 'language', 'selected': lang, 'class': 'required' }, LANG) # Table types = ComboboxSQL(props={ 'selected': asset['asset_types_id'], 'class': 'required' }, sql="SELECT id, type FROM asset_types;") licenses = ComboboxSQL(props={ 'selected': asset['licenses_id'], 'class': 'required' }, sql="SELECT id, name FROM licenses;") table = PropsAutoSQL(False, q) table.AddConstant('asset_id', str(asset_id)) table.Add('Tipo', types, 'asset_types_id', 'Tipo de activo') table.Add('Licencia', licenses, 'licenses_id', 'Licencia del activo') table.Add('Título', CTK.TextField({ 'class': 'required', 'maxlength': LEN_TITL }), 'title', 'Titulo del activo') table.Add('Descripción', CTK.TextField({ 'class': 'required', 'maxlength': LEN_DESC }), 'description', 'Descripcion del activo') table.Add('Versión', CTK.TextField({'class': 'required'}), 'version', 'Version del activo') table.Add('Idioma', languages, 'language', 'Idioma del activo') table.Add('Tema', CTK.TextField({ 'class': 'required', 'maxlength': LEN_SUBJ }), 'subject', 'El tema del contenido del recurso') form = CTK.Submitter('%s/edit/apply' % LOCATION) form += table form += CTK.SubmitterButton('Enviar') page = Page.Default() page += CTK.RawHTML("<h1>%s: Editar activo</h1>" % (MENU_LINK)) page += form return page.Render()
def get_fields_form(redir=None): # Render advanced search form q_types = "SELECT id, type FROM asset_types;" q_licenses = "SELECT id, name FROM licenses;" q_formats = "SELECT id, format FROM formats;" custom_option = ('', 'Elegir') lang_options = [custom_option] + [(x, '(%s) %s' % (x, y)) for x, y in LANG] advanced = CTK.PropsTable() advanced.Add('ID', CTK.TextField({ 'name': 'id', 'class': 'required one_field' }), 'Identificador del activo') advanced.Add( 'Título', CTK.TextField({ 'name': 'title', 'class': 'required one_field' }), 'Titulo del activo') advanced.Add( 'Tema', CTK.TextField({ 'name': 'subject', 'class': 'required one_field' }), 'El tema del contenido del activo') advanced.Add( 'Autor', CTK.TextField({ 'name': 'creator_name', 'class': 'required one_field' }), 'Nombre del creador del activo') advanced.Add( 'Publicador', CTK.TextField({ 'name': 'publisher_name', 'class': 'required one_field' }), 'Nombre del publicador del activo') advanced.Add( 'Colección', CTK.TextField({ 'name': 'collection_name', 'class': 'required one_field' }), 'Nombre de la colección en la que está el activo') advanced.Add( 'Idioma', CTK.Combobox({ 'name': 'language', 'class': 'required one_field' }, lang_options), 'Idioma del activo') advanced.Add( 'Licencia', ComboboxSQL({ 'name': 'licenses_id', 'class': 'required one_field' }, q_licenses, custom_option), 'Licencia del activo') advanced.Add( 'Tipo', ComboboxSQL({ 'name': 'asset_types_id', 'class': 'required one_field' }, q_types, custom_option), 'Tipo de activo') advanced.Add( 'Formato', ComboboxSQL({ 'name': 'formats_id', 'class': 'required one_field' }, q_formats, custom_option), 'Formato del activo') advanced.Add( 'Descripción', CTK.TextField({ 'name': 'description', 'class': 'required one_field' }), 'Descripcion del activo') advanced.Add('Creación', __get_date_table('date_created'), 'Fecha de creación del activo') advanced.Add('Publicación', __get_date_table('date_available'), 'Fecha de publicación del activo') advanced.Add('Versión', __get_interval_table('version'), 'Versión del activo') advanced.Add('Duración', __get_interval_table('extent'), 'Duración del activo (hh:mm)') advanced.Add('Vistas', __get_interval_table('views'), 'Número de visualizaciones del activo') advanced.Add('Tamaño', __get_interval_table('size'), 'Tamaño de archivo (bytes)') advanced.Add('Bitrate', __get_interval_table('bitrate'), 'Bitrate de codificación (bps)') advanced.Add('Anchura', __get_interval_table('width'), 'Anchura en pixels') advanced.Add('Altura', __get_interval_table('height'), 'Altura en pixels') form = CTK.Submitter("%s/apply" % (PageLookup.LOCATION)) form += advanced if redir: form += CTK.HiddenField({'name': 'redir', 'value': redir}) form += CTK.SubmitterButton('Buscar') return form
for key in ('freebsd', 'bsd'): if key in agent: self.os_selected = 'freebsd' break if not self.os_selected: for key in ('sunos', 'solaris'): if key in agent: self.os_selected = 'source' break if not self.os_selected: self.os_selected = 'source' # Build the widget content self.combo = CTK.Combobox ({'style': 'display:none;', 'selected': self.os_selected}, OS_OPTIONS) self += self.combo for e in OS_OPTIONS: code, name = e img = self.OS_Icon (code, name, self.os_selected) img.bind ('click', "$('#%s').val('%s').trigger('change'); $('.os-selected').removeClass('os-selected'); $(this).addClass('os-selected');"%(self.combo.id, code)) self += img class Download_MacOSX: def __call__ (self): # Find the DMG file dmg_refs = Downloads.get_latest_macosx_dmg() # No MacOS package found
def evolve_form(parent_id): # Authentication fail = Auth.assert_is_role(Role.ROLE_UPLOADER) if fail: return fail req = CTK.request.url.split('/') name, ref = None, None for r in req: try: if r.startswith('name='): name = r.split('name=')[1] elif r.startswith('ref='): ref = r.split('ref=')[1] except IndexError: pass asset = Asset(parent_id) lang = asset['language'] languages = CTK.Combobox({'name': 'language', 'selected': lang}, LANG) # Table types = ComboboxSQL(props={ 'name': 'asset_types_id', 'selected': asset['asset_types_id'] }, sql="SELECT id, type FROM asset_types;") licenses = ComboboxSQL(props={ 'name': 'licenses_id', 'selected': asset['licenses_id'] }, sql="SELECT id, name FROM licenses;") table = CTK.PropsTable() table.Add('Tipo', types, 'Tipo de activo') table.Add('Licencia', licenses, 'Licencia del activo') table.Add( 'Título', CTK.TextField({ 'value': asset['title'], 'name': 'title', 'class': 'required' }), 'Titulo del activo') table.Add( 'Descripción', CTK.TextField({ 'value': asset['description'], 'name': 'description', 'class': 'required' }), 'Descripcion del activo') table.Add( 'Versión', CTK.TextField({ 'value': asset['version'], 'name': 'version', 'class': 'required' }), 'Version del activo') table.Add( 'Partes', PartChooser({ 'name': 'parts', 'value': asset['parts'], 'class': 'required' }), 'Otros activos que forman parte del actual') table.Add('Idioma', languages, 'Idioma del activo') table.Add( 'Tema', CTK.TextField({ 'value': asset['subject'], 'name': 'subject', 'class': 'required' }), 'El tema del contenido del recurso') form = CTK.Submitter("%s/new/apply" % LOCATION) form += table form += CTK.HiddenField({'name': 'parent_id', 'value': parent_id}) form += CTK.SubmitterButton('Crear activo') page = Page.Default() page += CTK.RawHTML("<h1>%s: Evolucionar activo</h1>" % (MENU_LINK)) if name and ref: form += CTK.HiddenField({'name': 'ref', 'value': ref}) form += CTK.HiddenField({'name': 'name', 'value': name}) page += CTK.RawHTML('<h3>Archivo: "%s"</h3>' % (name)) page += form return page.Render()
def add_asset(parent_id=None): # Authentication fail = Auth.assert_is_role(Role.ROLE_UPLOADER) if fail: return fail req = CTK.request.url.split('/') name, ref = None, None for r in req: try: if r.startswith('name='): name = r.split('name=')[1] elif r.startswith('ref='): ref = r.split('ref=')[1] except IndexError: pass q_types = "SELECT id, type FROM asset_types;" q_licenses = "SELECT id, name FROM licenses;" q_formats = "SELECT id, format FROM formats;" lang_options = [(x, '(%s) %s' % (x, y)) for x, y in LANG] table = CTK.PropsTable() table.Add( 'Tipo', ComboboxSQL({ 'name': 'asset_types_id', 'class': "required" }, q_types), 'Tipo de activo') table.Add( 'Licencia', ComboboxSQL( { 'name': 'licenses_id', 'class': "required", 'selected': DEFAULT_LICENSE }, q_licenses), 'Licencia del activo') table.Add( 'Título', CTK.TextField({ 'name': 'title', 'class': "required", 'maxlength': LEN_TITL }), 'Titulo del activo') table.Add('Descripción', CTK.TextField({ 'name': 'description', 'maxlength': LEN_DESC }), 'Descripcion del activo') table.Add('Versión', CTK.TextField({'name': 'version'}), 'Version del activo') table.Add('Partes', PartChooser({'name': 'parts'}), 'Otros activos que forman parte del actual') table.Add( 'Idioma', CTK.Combobox({ 'name': 'language', 'class': "required" }, lang_options), 'Idioma del activo') table.Add( 'Tema', CTK.TextField({ 'name': 'subject', 'class': "required", 'maxlength': LEN_SUBJ }), 'El tema del contenido del recurso') form = CTK.Submitter("%s/new/apply" % LOCATION) form += table if parent_id: form += CTK.HiddenField({'name': 'parent_id', 'value': str(parent_id)}) page = Page.Default() page += CTK.RawHTML("<h1>%s: Añadir activo</h1>" % (MENU_LINK)) if name and ref: form += CTK.HiddenField({'name': 'ref', 'value': ref}) form += CTK.HiddenField({'name': 'name', 'value': name}) page += CTK.RawHTML('<h3>Archivo: "%s"</h3>' % (name)) page += form return page.Render()