예제 #1
0
    def environment_needs_upgrade(self, db):
        url_projects_path = self.env.config.get('multiproject',
                                                'url_projects_path', '')
        url_projects_path = url_projects_path.rstrip('/')
        home_path = '{0}/{1}'.format(
            url_projects_path,
            self.env.config.get('multiproject', 'sys_home_project_name',
                                'home'))
        self.env.project_identifier = env_name = os.path.split(
            self.env.path)[-1]
        env_path = '{0}/{1}'.format(url_projects_path, env_name)
        self.env.home_href = Href(home_path)

        domain_name = self.env.config.get('multiproject', 'domain_name', '')
        if not domain_name:
            self.env.abs_home_href = self.env.home_href
            self.env._abs_href = Href(env_path)
        else:
            default_http_scheme = self.env.config.get('multiproject',
                                                      'default_http_scheme',
                                                      'https')
            url_service = '{0}://{1}'.format(default_http_scheme, domain_name)
            self.env.abs_home_href = Href('{0}{1}'.format(
                url_service, home_path))
            self.env._abs_href = Href('{0}{1}'.format(url_service, env_path))
        return False
예제 #2
0
    def process_request(self, req):
        api = TrackerApi
        context = Context.from_request(req)
        db = self.env.get_db_cnx()
        context.cursor = db.cursor()
        actions = self._get_actions(context)

        if req.args.get('fromDMY') and req.args.get('toDMY') and req.args.get('username'):
            username = req.args.get('username')
            fromDMY = int(time.mktime(time.strptime(req.args.get('fromDMY'), '%d-%m-%Y'))).__str__()
            toDMY = int(time.mktime(time.strptime(req.args.get('toDMY'), '%d-%m-%Y'))).__str__()

            DEFAULT_TIME_VALUE = 10
            screenshots = self._get_users_screenshots(username, fromDMY, toDMY)
            summaryWorkedTimeInMinutes = len(screenshots) * DEFAULT_TIME_VALUE
            temp_tasks = {}
            for screenshot in screenshots:
                if screenshot['ticketId'] in temp_tasks.keys():
                    temp_tasks[screenshot['ticketId']]['minutes'] += DEFAULT_TIME_VALUE
                else:
                    temp_tasks[screenshot['ticketId']] = {'minutes': DEFAULT_TIME_VALUE, 'name': screenshot['summary'],
                                                          'id': screenshot['ticketId']}
            tasks = []
            for key, temp_task in temp_tasks.iteritems():
                href = Href(req.base_path)
                task = {
                    'hours': int(temp_task['minutes'] / 60),
                    'minutes': temp_task['minutes'] % 60,
                    'name': temp_task['name'],
                    'id': temp_task['id'],
                    'href': href.ticket(temp_task['id'])
                }
                tasks.append(task)
            req.data = {
                'screenshots': screenshots,
                'tasks': tasks,
                'summaryWorkedTimeHours': int(summaryWorkedTimeInMinutes / 60),
                'summaryWorkedTimeMinutes': summaryWorkedTimeInMinutes % 60,
                'fromDMY': req.args.get('fromDMY'),
                'toDMY': req.args.get('toDMY'),
                'username': req.args.get('username')
            }

            add_stylesheet(req, 'trac/css/tracker.css')
            return "user_report.html", req.data, None
        else:
            add_script(req, 'common/js/jquery-ui.js')
            add_stylesheet(req, 'common/css/jquery-ui/jquery-ui.css')
            add_script(req, 'common/js/jquery-ui-addons.js')
            add_stylesheet(req, 'common/css/jquery-ui-addons.css')
            req.data = {
                'users': api.get_users(TrackerApi(), context)
            }
            add_stylesheet(req, 'trac/css/tracker.css')
            return "user_report_date_picker.html", req.data, None
예제 #3
0
파일: base.py 프로젝트: tsanov/bloodhound
    def setUp(self, enabled=None, create_req=False, enable_security=False):
        if not enabled:
            enabled = ['trac.*', 'bhsearch.*']
        if not enable_security:
            disabled = ['bhsearch.security.*']
        else:
            disabled = []

        self.env = EnvironmentStub(enable=enabled, disable=disabled)
        self.env.path = tempfile.mkdtemp('bhsearch-tempenv')
        self.env.config.set('bhsearch', 'silence_on_error', "False")
        if create_req:
            self.req = Mock(
                perm=MockPerm(),
                chrome={
                    'logo': {},
                    'links': {}
                },
                href=Href("/main"),
                base_path=BASE_PATH,
                path_info='/bhsearch',
                args=arg_list_to_args([]),
                authname='x',
            )
            self.context = Mock(req=self.req)

        # Test without multiproduct.
        if hasattr(self.env, 'parent'):
            del self.env.parent
예제 #4
0
파일: web_ui.py 프로젝트: tsanov/bloodhound
 def setUp(self):
     self.req = Mock(
         perm=MockPerm(),
         chrome={'logo': {}},
         href=Href("/main"),
         base_path=BASE_PATH,
         args=arg_list_to_args([]),
     )
예제 #5
0
 def test_run_html_formatter(self):
     wiki_content = "!WikiSyntax"
     page = self.create_wiki("Dummy wiki", wiki_content)
     from trac.mimeview.api import RenderingContext
     context = RenderingContext(
         page.resource,
         href=Href('/'),
         perm=MockPerm(),
     )
     context.req = None  # 1.0 FIXME .req shouldn't be required by formatter
     format_to_html(self.env, context, wiki_content)
예제 #6
0
    def __init__(self):
        self.args = {'action': '', 'tag': 'test tag'}

        class DummyPerm(object):
            def require(self, rights):
                pass

        self.perm = DummyPerm()
        self.method = 'POST'
        self.base_path = 'path'
        self.href = Href('/tmp')  #@UndefinedVariable
        self.chrome = {}
예제 #7
0
    def icon_url(self):
        """
        Returns the URL path to project icon, or default if not set
        :return: Path of the icon URL
        """
        # Load default icon URL from configuration
        icon_url = conf.get('multiproject-projects', 'icon_default_url', '')

        # If project has icon set, show it instead
        if self.icon_name:
            icon_url = Href(conf.get('multiproject-projects', 'icon_url',
                                     ''))(self.icon_name)

        return icon_url
예제 #8
0
    def setUp(self):
        self.env = EnvironmentStub(enable=['bhsearch.*'])
        current_current_dir = os.getcwd()

        real_env_path = os.path.join(
            current_current_dir,
            "../../../installer/bloodhound/environments/main")
        self.env.path = real_env_path
        self.whoosh_backend = WhooshBackend(self.env)

        self.req = Mock(
            perm=MockPerm(),
            chrome={'logo': {}},
            href=Href("/main"),
            args=arg_list_to_args([]),
        )
예제 #9
0
 def href(self):
     return Href(self.url)