Esempio n. 1
0
class ProjectGrid(BootstrapGrid):
    fields = [("Project id", "id"), ("User", "get_username"),
              ("Name", "project_name"),
              ("Samples", lambda obj: genshi.Markup(obj.samples_display)),
              ("Description", "description"), ("Date", "created"),
              ("Actions", lambda obj: genshi.Markup(
                  get_edit_link(obj.id) + get_delete_project(obj.id)))]
Esempio n. 2
0
 def pliki(self, obj):
     import collections
     if obj.filename:
         if isinstance(obj.filename, collections.Iterable):
             value= '<div><ol>'
             for file in obj.filename:
                 value += '<li><a href="/files/{0}">{1}</a></li>'.format(file.filename, file.name)
             value += '</ol></div>'
             return value
         else:
             return genshi.Markup('<a href="/files/{0}">test_{0}</a>'.format(obj.filename.filename) )
     else:
         return genshi.Markup('<em>None</em>')
Esempio n. 3
0
def redeemLicense(obj):
    if obj.Assignemt.count_1 > 0:
        return genshi.Markup(
            '<a href="%s">Redeem</a>' %
            url('/create_license', params=dict(id=obj.Computer.id)))
    else:
        return ''
Esempio n. 4
0
 def get_title(self):
     cur_ordering = request.GET.get('ordercol')
     if cur_ordering is not None:
         cur_ordering = urllib2.unquote(cur_ordering.encode('utf8'))
         args = re.findall('(\+|\-){1}(\w+)+', cur_ordering)
         isin = False
         
         for i in range(len(args)):
             tmp = args[i]
             sign = tmp[0]
             word = tmp[1]
             
             if word == self.name:
                 sign = sign == '+' and '-' or '+'
                 isin = True
                 args[i] = (sign, word)
                 
         if not isin:
             args.append(('+', self.name))
             
     else :
         args = [('+', self.name)]
     new_params = dict(request.GET)
     new_params['ordercol'] = ''.join('%s%s' % (k, v) for k, v in args)
     
     new_url = url(request.path_url, params=new_params)
     return genshi.Markup('<a href=%s > %s </a>' % (new_url, self._title))
Esempio n. 5
0
File: util.py Progetto: bbcf/biorepo
 def to_json(self):
     return {
         'meas': {
             'id':
             self.meas.id,
             'user':
             self.get_name(),
             'name':
             self.get_meas_name(),
             'description':
             self.meas.description,
             'created':
             self.date.strftime(date_format),
             'samples': [sample.to_json() for sample in self.samples],
             'samples_display':
             ' ; '.join(['%s' % (sample.name) for sample in self.samples]),
             'projects_display':
             self.get_projects(),
             'sample_type':
             self.get_sample_type(),
             'measurement_type':
             self.get_measurement_type(),
             'attributs_meas':
             [a.to_json() for a in self.meas.attributs if not a.deprecated],
             'attributs_samples':
             self.get_attributs_samples_json(),
             'scroll_info':
             genshi.Markup(self.get_img_scroll()),
             'get_extension':
             self.get_extension
         }
     }
Esempio n. 6
0
class MeasGrid(BootstrapGrid):
    fields = [
        ("User", "get_username"),
        ("Sample", "samples_display"),
        ("Name", "name"),
        ('Attachment', lambda obj: genshi.Markup(obj.get_extension)),
        ("Description", "description"),
        ("Visibility", "get_status_type"),
        ("Raw", "get_type"),
        ("Date", "created"),
        (
            "Action",
            lambda obj: genshi.Markup(
                get_dl_link2(obj.id)
                #+ get_UCSC_link(obj.id)
                #+ get_GDV_link(obj.id)
                + get_edit_link(obj.id) + get_delete_link(obj.id)))
    ]
Esempio n. 7
0
def make_tooltip(title, message):
    return genshi.Markup('''
            <div class='tooltip_gdv'>
                <div class='tooltip_hider'></div>
                <span class='tooltip_pane'>
                <div class='tooltip_title'><h3>%s</h3></div>
                <div class='tooltip_body'>%s</div>
                </span>
            </div>
        ''' % (title, message))
Esempio n. 8
0
class SearchGridT(DataGrid):
    #    fields = [("User","get_username"),("Cell Type", lambda obj:genshi.Markup(obj.sample_cell_type)),
    #        ("Species",lambda obj:genshi.Markup(obj.sample_species)),
    #         ("Ab target", lambda obj:genshi.Markup(obj.sample_ab_target)),("Bio bg",lambda obj:genshi.Markup(obj.sample_bio_bg)),
    #        ("Type",lambda obj:genshi.Markup(obj.sample_type)),("DataType",lambda obj:genshi.Markup(obj.measurement_type)),
    #        ("Description",lambda obj:genshi.Markup(obj.description)),
    #        ("Action", lambda obj:genshi.Markup(
    #        get_info_link(obj.id,obj.description)
    #        +get_dl_link(obj.id)
    #        +get_UCSC_link(obj.id)
    #        +get_GDV_link(obj.id)
    #        +get_SPAN_id(obj.id)
    #    ))]
    # -----------------------------   old version           ---------------
    # fields = [("User", "get_username"),
    #     ("Samples", lambda obj:genshi.Markup(obj.samples_display)), ("Type", lambda obj:genshi.Markup(obj.sample_type)),
    #     ("Cell Type", lambda obj:genshi.Markup(obj.sample_cell_type)), ("Target", lambda obj:genshi.Markup(obj.sample_ab_target)),
    #     ("Bio bg", lambda obj:genshi.Markup(obj.sample_bio_bg)), ("Stage", lambda obj:genshi.Markup(obj.sample_stage)),
    #     ("Measurements", "name"), ("Assembly", "assembly"),
    #     ("DataType", lambda obj:genshi.Markup(obj.measurement_type)), ("Date", "created"), ("Final", lambda obj:genshi.Markup(obj.flag_final_type)),
    #     ("Description", lambda obj:genshi.Markup(obj.description)),
    #     ("Action", lambda obj:genshi.Markup(
    #         get_info_link(obj.id, obj.description)
    #         + get_dl_link(obj.id)
    #         + get_UCSC_link(obj.id)
    #         + get_GDV_link(obj.id)
    #         + get_SPAN_id(obj.id)
    #     ))]

    fields = [
        ("User", "get_username"),
        ("Samples", lambda obj: genshi.Markup(obj.samples_display)),
        ("Type", lambda obj: genshi.Markup(obj.sample_type)),
        ("Measurements", "name"),
        ("DataType", lambda obj: genshi.Markup(obj.measurement_type)),
        ("Date", "created"),
        ("Action", lambda obj: genshi.Markup(
            get_info_link(obj.id, obj.description) + get_dl_link(obj.id) +
            get_UCSC_link(obj.id) + get_GDV_link(obj.id) + get_SPAN_id(obj.id))
         )
    ]
Esempio n. 9
0
def get_task_status(track=None):
    '''
    Get a output for the status of a task: a link to the traceback if the status is ``FAILURE``,
    else the string representing the status.
    @param track: the track to get the status from
    '''
    obj = track
    if obj.status != constants.ERROR:
        return obj.status
    return genshi.Markup('<a href="%s">%s</a>' % (url('./traceback', params={'track_id': obj.id, 'tmp': obj.tmp}),
                                                  constants.ERROR
                                                  ))
Esempio n. 10
0
def track_grid_user(user, project=None):
    return twf.DataGrid(fields=[
        ('Name', 'name'),
        (hoover_action, lambda obj: hoover_actions(
            helpers.export_link(obj.id, url('/tracks'), project=project) +
            helpers.edit_link(obj.id, url('/tracks'), project=project) +
            helpers.delete_link(obj.id, url('/tracks'), project=project))),
        ('Color', lambda obj: genshi.Markup(helpers.track_color(obj))),
        ('Owner', 'owner'),
        ('Created', 'created'),
        ('Assembly', 'sequence'),
        ('Type', 'vizu'),
        (hidden_info, lambda obj: hide_info({
            'tr_id': obj.id,
            'tr_status': obj.status,
        })),
    ])
Esempio n. 11
0
def track_grid_permissions(user=None, rights=None, project=None):
    # hidden info on the track
    h_info = lambda obj: hide_info({
        'tr_id': obj.id,
        'tr_status': obj.status,
        'tr_color': helpers.get_track_color(obj),
    })
    debug('Track grid permissions with %s' % rights)
    return twf.DataGrid(fields=[
        ('Name', 'name'),
        (hoover_action, lambda obj: get_actions(obj, user, rights, project)),
        ('Color', lambda obj: genshi.Markup(helpers.track_color(obj))),
        ('Owner', 'owner'),
        ('Created', 'created'),
        ('Assembly', 'sequence'),
        ('Type', 'vizu'),
        (hidden_info, h_info),
    ])
Esempio n. 12
0
File: util.py Progetto: bbcf/biorepo
 def __init__(self, meas):
     self.meas = meas
     self.id = self.meas.id
     self.user = self.get_name()
     self.description = self.meas.description
     self.date = self.meas.date
     self.created = self.date.strftime(date_format)
     self.samples = self.meas.samples
     self.samples_display = ' ; '.join(
         ['%s' % (sample.name) for sample in self.samples])
     self.projects_display = self.get_projects()
     self.name = self.get_meas_name()
     self.sample_type = self.get_sample_type()
     self.measurement_type = self.get_measurement_type()
     self.attributs_meas = [
         a for a in self.meas.attributs if not a.deprecated
     ]
     #self.searchable_attributs_meas = [a for a in self.attributs_meas if a.searchable]
     self.attributs_samples = self.get_attributs_samples()
     #self.searchable_attributs_samples = [a for a in self.attributs_samples if a.searchable]
     self.scroll_info = genshi.Markup(self.get_img_scroll())
     self.get_extension = self.get_extension()
Esempio n. 13
0
def unlockComputer(obj):
    return  genshi.Markup('<form method="POST" action="%s" class="button-to"><input type="hidden" name="_method" value="Unlock" /><input class="delete-button" onclick="return confirm(\'Are you sure you want to unlock this computer?\');" value="Unlock" type="submit" style="background-color:transparent; float:left; border:0; color: #286571; display:inline; margin:0; padding:0;"/></form>' % url('/unlock_computer', params=dict(id=obj.Computer.id)))
Esempio n. 14
0
def redeemLicense(obj):
    count = DBSession.query(model.Assignment).filter(model.Assignment.computer_id==obj.id, model.Assignment.user_id==obj.user_id).count()
    if count  > 0:
        return  genshi.Markup('<form method="POST" action="%s" class="button-to"><input type="hidden" name="_method" value="DELETE" /><input class="delete-button" onclick="return confirm(\'All assignments to this computer will be locked.  Are you sure you want to redeem the assigned licenses?\');" value="Redeem" type="submit" style="background-color:transparent; float:left; border:0; color: #286571; display:inline; margin:0; padding:0;"/></form>' % url('/create_license', params=dict(id=obj.id)))
    else:
        return genshi.Markup('<a href="%s">Delete </a>' % url('/delete_computer', params=dict(id=obj.id)))
Esempio n. 15
0
def removeAssignment(obj):
    locked = DBSession.query(model.Assignment.locked).filter(model.Assignment.id==obj.Assignment.id, model.Assignment.user_id==obj.Assignment.user_id).first().locked
    if locked == True:
        return ''
    else:
        return genshi.Markup('<a href="%s">Delete</a>' % url('/delete_assignment', params=dict(id=obj.Assignment.id)))
Esempio n. 16
0
def help_address(hurl, section, title):
    return genshi.Markup('''
        <a href="%s#%s" title="%s">
        <img src="../images/question.png" width="16" height="16"/></a>
        </a>
         ''' % (hurl, section, title))
Esempio n. 17
0
File: util.py Progetto: bbcf/biorepo
    def to_json_test(self):
        static_fields = {
            'Description':
            self.meas.description,
            'User':
            self.get_name(),
            'Measurements':
            self.get_meas_name(),
            'description':
            self.meas.description,
            'Created':
            self.date.strftime(date_format),
            'Samples':
            ' ; '.join(['%s' % (sample.name) for sample in self.samples]),
            'Projects':
            self.get_projects(),
            'Type':
            self.get_sample_type(),
            'DataType':
            self.get_measurement_type(),
            'scroll_info':
            genshi.Markup(self.get_img_scroll()),
            'Attachment':
            self.get_extension,
            'Actions':
            get_info_link(self.id) + get_dl_link(self.id) +
            get_public_link(self.id) + get_UCSC_link(self.id) +
            get_GViz_link(self.id) + get_SPAN_id(self.id)
        }
        #find None statics fields to change the display in datatables
        for sf in static_fields.keys():
            if static_fields[sf] is None or static_fields[sf] == "":
                static_fields[sf] = None

        dyn_in_searchgrid = session.get("search_grid_fields", [])
        labo = session.get("current_lab")
        for d in dyn_in_searchgrid:
            new = d.replace("_", " ")
            dyn_in_searchgrid.remove(d)
            dyn_in_searchgrid.append(new)
        meas_dynamic_fields = {}
        samples_dynamic_fields = {}
        attributs_meas = [
            a.to_json() for a in self.meas.attributs if not a.deprecated
        ]
        list_avalues_meas = self.meas.a_values

        for avm in list_avalues_meas:
            for am in attributs_meas:
                key = am["key"].replace("_", " ")
                if str(am["id"]) == str(avm.attribut_id):
                    if am["widget"] != "checkbox" and am[
                            "widget"] != "hiding_checkbox":
                        meas_dynamic_fields[key] = avm.value
                    else:
                        if check_boolean(avm.value):
                            meas_dynamic_fields[key] = key
                        else:
                            meas_dynamic_fields[key] = "NOT " + str(key)

        attributs_samples = self.get_attributs_samples_json()
        if len(self.samples) < 2:
            for s in self.samples:
                list_avalues_samples = s.a_values
                for avs in list_avalues_samples:
                    for a_s in attributs_samples:
                        key = a_s["key"].replace("_", " ")
                        if str(a_s["id"]) == str(avs.attribut_id):
                            if a_s["widget"] != "checkbox" and a_s[
                                    "widget"] != "hiding_checkbox":
                                samples_dynamic_fields[key] = avs.value
                            else:
                                if check_boolean(avs.value):
                                    samples_dynamic_fields[key] = key
                                else:
                                    samples_dynamic_fields[key] = "NOT " + str(
                                        key)
        else:
            for s in self.samples:
                list_avalues_samples = s.a_values
                for avs in list_avalues_samples:
                    for a_s in attributs_samples:
                        key = a_s["key"].replace("_", " ")
                        if str(a_s["id"]) == str(avs.attribut_id):
                            if a_s["widget"] != "checkbox" and a_s[
                                    "widget"] != "hiding_checkbox":
                                if key not in samples_dynamic_fields.keys():
                                    samples_dynamic_fields[key] = [avs.value]
                                else:
                                    if avs.value not in samples_dynamic_fields[
                                            key]:
                                        samples_dynamic_fields[key].append(
                                            avs.value)
                            else:
                                if check_boolean(avs.value):
                                    if key not in samples_dynamic_fields.keys(
                                    ):
                                        samples_dynamic_fields[key] = [key]
                                    else:
                                        samples_dynamic_fields[key].append(key)
                                else:
                                    if key not in samples_dynamic_fields.keys(
                                    ):
                                        samples_dynamic_fields[key] = [
                                            "NOT " + str(key)
                                        ]
                                    else:
                                        samples_dynamic_fields[key].append(
                                            "NOT " + str(key))
            for k in samples_dynamic_fields.keys():
                samples_dynamic_fields[k] = " ; ".join(
                    samples_dynamic_fields[k])

        #Sorting dynamic fields with conf file to display in searchgrid
        dyn_fields = {}
        for k in samples_dynamic_fields:
            if k in dyn_in_searchgrid:
                dyn_fields[k.capitalize()] = samples_dynamic_fields[k]
        for key in meas_dynamic_fields:
            if key in dyn_in_searchgrid:
                dyn_fields[key.capitalize()] = meas_dynamic_fields[key]
        #for the empty fields
        for k in dyn_in_searchgrid:
            if k.capitalize() not in dyn_fields.keys():
                k_db = k.replace(" ", "_")
                lab = DBSession.query(Labs).filter(Labs.name == labo).first()
                lab_id = lab.id
                k_obj = DBSession.query(Attributs).filter(
                    and_(Attributs.key == k_db,
                         Attributs.lab_id == lab_id)).first()
                if k_obj.widget != "checkbox" and k_obj.widget != "hiding_checkbox":
                    dyn_fields[k.capitalize()] = None
                else:
                    dyn_fields[k.capitalize()] = ["NOT " + str(k)]

        final = dict(static_fields.items() + dyn_fields.items())
        return final
Esempio n. 18
0
def hoover_actions(actions):
    return genshi.Markup("<div class='hoover_actions table_hidden'>%s</div>" %
                         actions)
Esempio n. 19
0
from pygdv.lib import constants, helpers
import tw.forms as twf
import genshi
from tg import url

DEBUG_LEVEL = 0


def debug(s, t=0):
    if DEBUG_LEVEL > 0:
        print '[datagrid] %s%s' % ('\t' * t, s)


hidden_info = genshi.Markup("<span class='table_hidden'>hidden_info</span>")

hoover_action = genshi.Markup("<div class='table_hidden'>hidden_info</div>")


def hoover_actions(actions):
    return genshi.Markup("<div class='hoover_actions table_hidden'>%s</div>" %
                         actions)


def hide_info(dict):
    span = ''
    for k, v in dict.iteritems():
        span += "<span class='table_hidden %s'>%s</span>" % (k, v)
    return genshi.Markup("<div class='hidden_info'>%s</div>" % span)


sequences_grid = twf.DataGrid(fields=[
Esempio n. 20
0
def build_search_grid(measurements):
    search_grid = BootstrapGrid()
    #static end
    end_fields = [('Attachment', lambda obj: genshi.Markup(obj.get_extension)),
                  ('Description', "description"), ("Date", "created"),
                  ("Action", lambda obj: genshi.Markup(
                      get_info_link(obj.id) + get_dl_link(obj.id) +
                      get_public_link(obj.id) + get_UCSC_link(obj.id) +
                      get_GViz_link(obj.id) + get_SPAN_id(obj.id)))]
    #static and dynamic fields
    fields = []
    fields_static = [("", "scroll_info"), ("User", "user"), ("Projects", lambda obj:genshi.Markup(obj.projects_display)), ("Samples", lambda obj:genshi.Markup(
        obj.samples_display)), ("Type", lambda obj:genshi.Markup(obj.sample_type)),\
        ("Measurements", lambda obj:genshi.Markup(obj.name)), ("DataType", lambda obj:genshi.Markup(obj.measurement_type))]
    fields_dyn = []
    list_searchable = []
    positions_not_searchable = []
    hidden_list = []
    lab_id = None
    if not isinstance(measurements, list):
        measurements = [measurements]
    if len(measurements) > 0:
        meas = measurements[0]
        #dyn meas
        for att in meas.attributs:
            #get the lab_id
            lab_id = att.lab_id
            vals = lambda obj, a=att: obj.get_values_from_attributs_meas(a)
            fields_dyn.append((att.key, vals))
            if att.searchable == True:
                list_searchable.append(att.key)
        #dyn sample
        if len(meas.samples) > 0:
            sample = (meas.samples)[0]
            for att in sample.attributs:
                val = lambda obj, a=att: obj.get_values_from_attributs_sample(a
                                                                              )
                fields_dyn.append((att.key, val))
                if att.searchable == True:
                    list_searchable.append(att.key)
    ############## CUSTOMIZE THE SEARCH GRID BY LAB #######################
    #/!\ the grid begins at 0
    #to customize hidden fields by lab
    lab = DBSession.query(Labs).filter(Labs.id == lab_id).first()
    movable_fields = fields_static + fields_dyn
    if lab:
        if lab.name == "ptbb":
            pass
        elif lab.name == "updub":
            pass
        elif lab.name == "lvg":
            #move some field in the grid
            for f in movable_fields:
                if f[0] == "flag_final":
                    new_list = value_travel_into_da_list(
                        movable_fields, movable_fields.index(f),
                        len(movable_fields))
                    movable_fields = new_list
            for f in movable_fields:
                if f[0] == "quality":
                    new_list = value_travel_into_da_list(
                        movable_fields, movable_fields.index(f),
                        len(movable_fields))
                    movable_fields = new_list

            #hide Samples name
            for f in movable_fields:
                if f[0] == "Samples":
                    i = movable_fields.index(f)
                    hidden_list.append(i)
            for f in movable_fields:
                if f[0] == "ab_source":
                    i = movable_fields.index(f)
                    hidden_list.append(i)
        elif lab.name == "upnae":
            fields_to_hide = ["replica_id", "drug_dose", "lane_id", "paired_end_id", "strand",\
            "source", "machine", "starting_material", "treatment", "paired_end", "polya", "strand_specific",\
            "viewpoint", "protein_bait", "technical_replica_id", "feeding_type", "light_condition"]
            for f in movable_fields:
                if f[0] in fields_to_hide:
                    i = movable_fields.index(f)
                    hidden_list.append(i)
        elif lab.name == "stutz":
            fields_to_hide = ["article_title", "strain", "time_point", "antibody", "treatment_time",\
             "phase", "medium", "background"]
            for f in movable_fields:
                if f[0] in fields_to_hide:
                    i = movable_fields.index(f)
                    hidden_list.append(i)
        elif lab.name == "shore":
            fields_to_hide = [
                "article_title", "year", "time_point", "sequencing_method",
                "treatment_time", "phase"
            ]
            for f in movable_fields:
                if f[0] in fields_to_hide:
                    i = movable_fields.index(f)
                    hidden_list.append(i)

    #addition with the 3 common end-fields
    fields = movable_fields + end_fields
    #build the list (positions_not_searchable) to send to the js for the searchable buttons
    for f in fields:
        search_grid.fields.append(f)
    for i, item in enumerate(search_grid.fields):
        if item[0] not in list_searchable:
            positions_not_searchable.append(i)

    for f in fields_static:
        for i, item in enumerate(movable_fields):
            #and i not in list_tmp
            if f[0] == item[0] and f[
                    0] != '' and f in fields_static and i in positions_not_searchable:
                positions_not_searchable.remove(i)

    #build the list (ignored_list) for the ignored fields
    total = len(search_grid.fields) - 1
    hidden_list.append(total - 2)

    #positions_not_searchable = delete the search button of the field
    #hidden_list = the field does not appear anymore into the searchgrid and its search button disappears BUT it is still searchable !
    return search_grid, hidden_list, positions_not_searchable
Esempio n. 21
0
class TrackhubGrid(BootstrapGrid):
    fields = [("Trackhub", "name"),
              ("Visualize - Edit Colors - Delete", lambda obj: genshi.Markup(
                  view_th(obj.url_th) + get_edit_th(obj.name) + get_delete_th(
                      obj.name)))]
Esempio n. 22
0
def hide_info(dict):
    span = ''
    for k, v in dict.iteritems():
        span += "<span class='table_hidden %s'>%s</span>" % (k, v)
    return genshi.Markup("<div class='hidden_info'>%s</div>" % span)
Esempio n. 23
0
class SampleGrid(BootstrapGrid):
    fields = [("Sample id", "id"), ("User", "get_username"), ("Name", "name"),
              ("Type", "type"), ("Protocole", "protocole"),
              ("Date", "created"),
              ("Action", lambda obj: genshi.Markup(
                  get_edit_link(obj.id) + get_delete_link(obj.id)))]
Esempio n. 24
0
 def image(self, obj):
     return genshi.Markup('<a class="thumbnail" href="#thumb"><img src="%s" width="120px" height="120px" border="0" /><span><img src="%s" /><br />[<b>%s</b>] %s</span></a>' %
                                     (url("/l_images/" + "thumb" + str(obj.id) + ".png"), url("/l_images/" + str(obj.id) + ".png"), obj.id, obj.name)
                                        )