root/galaxy-central/lib/galaxy/web/controllers/requests.py @ 2

リビジョン 2, 4.8 KB (コミッタ: hatakeyama, 14 年 前)

import galaxy-central

行番号 
1from galaxy.web.base.controller import *
2from galaxy.web.framework.helpers import grids
3from galaxy.model.orm import *
4from galaxy import model, util
5from galaxy.web.form_builder import *
6from galaxy.web.controllers.requests_common import RequestsGrid
7import logging
8
9log = logging.getLogger( __name__ )
10
11class UserRequestsGrid( RequestsGrid ):
12    operations = [ operation for operation in RequestsGrid.operations ]
13    operations.append( grids.GridOperation( "Edit", allow_multiple=False, condition=( lambda item: not item.deleted and item.is_unsubmitted ) ) )
14    operations.append( grids.GridOperation( "Delete", allow_multiple=True, condition=( lambda item: not item.deleted and item.is_new ) ) )
15    operations.append( grids.GridOperation( "Undelete", allow_multiple=True, condition=( lambda item: item.deleted ) ) )
16    def apply_query_filter( self, trans, query, **kwd ):
17        # gvk ( 9/28/10 ) TODO: is this method needed?
18        return query.filter_by( user=trans.user )
19
20class Requests( BaseController ):
21    request_grid = UserRequestsGrid()
22
23    @web.expose
24    @web.require_login( "view sequencing requests" )
25    def index( self, trans ):
26        return trans.fill_template( "requests/index.mako" )
27    @web.expose
28    @web.require_login( "create/submit sequencing requests" )
29    def find_samples_index( self, trans ):
30        return trans.fill_template( "requests/find_samples_index.mako" )
31    @web.expose
32    def browse_requests( self, trans, **kwd ):
33        if 'operation' in kwd:
34            operation = kwd['operation'].lower()
35            if operation == "edit":
36                return trans.response.send_redirect( web.url_for( controller='requests_common',
37                                                                  action='edit_basic_request_info',
38                                                                  cntrller='requests',
39                                                                  **kwd ) )
40            if operation == "manage_request":
41                return trans.response.send_redirect( web.url_for( controller='requests_common',
42                                                                  action='manage_request',
43                                                                  cntrller='requests',
44                                                                  **kwd ) )
45            if operation == "delete":
46                return trans.response.send_redirect( web.url_for( controller='requests_common',
47                                                                  action='delete_request',
48                                                                  cntrller='requests',
49                                                                  **kwd ) )
50            if operation == "undelete":
51                return trans.response.send_redirect( web.url_for( controller='requests_common',
52                                                                  action='undelete_request',
53                                                                  cntrller='requests',
54                                                                  **kwd ) )
55            if operation == "request_events":
56                return trans.response.send_redirect( web.url_for( controller='requests_common',
57                                                                  action='request_events',
58                                                                  cntrller='requests',
59                                                                  **kwd ) )
60
61        # If there are requests that have been rejected, show a message as a reminder to the user
62        rejected = 0
63        for request in trans.sa_session.query( trans.app.model.Request ) \
64                            .filter( trans.app.model.Request.table.c.deleted==False ) \
65                            .filter( trans.app.model.Request.table.c.user_id==trans.user.id ):
66            if request.is_rejected:
67                rejected = rejected + 1
68        if rejected:
69            status = 'warning'
70            message = "%d requests (highlighted in red) were rejected.  Click on the request name for details." % rejected
71            kwd[ 'status' ] = status
72            kwd[ 'message' ] = message
73        # show the create request button to the user, only when the user has permissions
74        # to at least one request_type (sequencer configuration)
75        if len( trans.user.accessible_request_types( trans ) ):
76            self.request_grid.global_actions = [ grids.GridAction( "Create new request", dict( controller='requests_common',
77                                                                                              action='create_request',
78                                                                                              cntrller='requests' ) ) ]
79        else:
80            self.request_grid.global_actions = []
81        # Render the list view
82        return self.request_grid( trans, **kwd )
83   
Note: リポジトリブラウザについてのヘルプは TracBrowser を参照してください。