Ejemplo n.º 1
0
    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
Ejemplo n.º 2
0
    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
Ejemplo n.º 3
0
    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)
Ejemplo n.º 4
0
    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
Ejemplo n.º 5
0
    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)
Ejemplo n.º 6
0
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
Ejemplo n.º 7
0
        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
Ejemplo n.º 8
0
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
Ejemplo n.º 9
0
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()
Ejemplo n.º 10
0
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
Ejemplo n.º 11
0
            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
Ejemplo n.º 12
0
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()
Ejemplo n.º 13
0
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&ntilde;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()