コード例 #1
0
ファイル: __init__.py プロジェクト: tulustul/intranet
 def dispatch(self):
     client_id = self.request.GET.get('client_id')
     client = Client.query.get(client_id)
     form = ProjectForm(self.request.POST)
     if self.request.method == 'POST' and form.validate():
         tracker_id = form.tracker_id.data
         coordinator_id = int(form.coordinator_id.data) if form.coordinator_id.data.isdigit() else None
         project = Project(
             client=client,
             name=form.name.data,
             coordinator_id=coordinator_id,
             tracker_id=tracker_id,
             turn_off_selectors=form.turn_off_selectors.data,
             project_selector=form.project_selector.data,
             component_selector=form.component_selector.data,
             version_selector=form.version_selector.data,
             ticket_id_selector=form.ticket_id_selector.data,
             active=form.active.data,
             google_card=form.google_card.data,
             google_wiki=form.google_wiki.data,
             mailing_url=form.mailing_url.data,
             working_agreement=form.working_agreement.data,
             definition_of_done=form.definition_of_done.data,
             definition_of_ready=form.definition_of_ready.data,
             continuous_integration_url=form.continuous_integration_url.data,
             backlog_url=form.backlog_url.data,
             status = form.status.data,
         )
         self.session.add(project)
         self.session.flush()
         self.flash(self._(u"Project added"))
         LOG(u"Project added")
         SelectorMapping.invalidate_for(tracker_id)
         return HTTPFound(location=self.request.url_for('/client/view', client_id=project.client_id))
     return dict(client=client, form=form)
コード例 #2
0
ファイル: __init__.py プロジェクト: tulustul/intranet
    def dispatch(self):
        project_id = self.request.GET.get('project_id')
        project =  self.session.query(Project).filter(Project.id==project_id).one()
        form = ProjectForm(self.request.POST, obj=project)
        # hack, when user has no permision coordinator (that means that he has only scrum perms)
        # we do not validate the form
        if self.request.method == 'POST' and (not self.request.has_perm('coordinator') or form.validate()):
            project.working_agreement = form.working_agreement.data
            project.definition_of_done = form.definition_of_done.data
            project.definition_of_ready = form.definition_of_ready.data
            project.continuous_integration_url = form.continuous_integration_url.data
            project.backlog_url = form.backlog_url.data
            if self.request.has_perm('coordinator'):
                project.name = form.name.data
                coordinator_id = int(form.coordinator_id.data) if form.coordinator_id.data.isdigit() else None
                project.coordinator_id = coordinator_id
                project.tracker_id = form.tracker_id.data
                project.turn_off_selectors = form.turn_off_selectors.data
                project.project_selector = form.project_selector.data
                project.component_selector = form.component_selector.data
                project.version_selector = form.version_selector.data
                project.ticket_id_selector = form.ticket_id_selector.data
                project.active = form.active.data
                project.google_card = form.google_card.data
                project.google_wiki = form.google_wiki.data
                project.mailing_url = form.mailing_url.data
                project.status = form.status.data

            self.flash(self._(u"Project saved"))
            LOG(u"Project saved")
            SelectorMapping.invalidate_for(project.tracker_id)
            return HTTPFound(location=self.request.url_for('/project/edit', project_id=project.id))
        return dict(project_id=project.id, form=form)
コード例 #3
0
ファイル: __init__.py プロジェクト: pytlakp/intranet-1
    def dispatch(self):
        project_id = self.request.GET.get('project_id')
        project =  Project.query.get(project_id)
        form = ProjectForm(self.request.POST, obj=project)
        if self.request.method == 'POST' and form.validate():
            SelectorMapping.invalidate_for(project.tracker_id)
            project.name = form.name.data
            coordinator_id = int(form.coordinator_id.data) if form.coordinator_id.data.isdigit() else None
            project.coordinator_id = coordinator_id
            project.tracker_id = form.tracker_id.data
            project.turn_off_selectors = form.turn_off_selectors.data
            project.project_selector = form.project_selector.data
            project.component_selector = form.component_selector.data
            project.version_selector = form.version_selector.data
            project.ticket_id_selector = form.ticket_id_selector.data
            project.active = form.active.data
            project.google_card = form.google_card.data
            project.google_wiki = form.google_wiki.data
            project.mailing_url = form.mailing_url.data
            project.working_agreement = form.working_agreement.data
            project.definition_of_done = form.definition_of_done.data
            project.definition_of_ready = form.definition_of_ready.data
            project.continuous_integration_url = form.continuous_integration_url.data
            project.backlog_url = form.backlog_url.data
            project.status = form.status.data

            self.flash(self._(u"Project saved"))
            LOG(u"Project saved")
            SelectorMapping.invalidate_for(project.tracker_id)
            return HTTPFound(location=self.request.url_for('/client/view', client_id=project.client_id))
        return dict(project_id=project.id, form=form)
コード例 #4
0
ファイル: __init__.py プロジェクト: pytlakp/intranet-1
 def dispatch(self):
     client_id = self.request.GET.get('client_id')
     client = Client.query.get(client_id)
     form = ProjectForm(self.request.POST)
     if self.request.method == 'POST' and form.validate():
         tracker_id = form.tracker_id.data
         coordinator_id = int(form.coordinator_id.data) if form.coordinator_id.data.isdigit() else None
         project = Project(
             client=client,
             name=form.name.data,
             coordinator_id=coordinator_id,
             tracker_id=tracker_id,
             turn_off_selectors=form.turn_off_selectors.data,
             project_selector=form.project_selector.data,
             component_selector=form.component_selector.data,
             version_selector=form.version_selector.data,
             ticket_id_selector=form.ticket_id_selector.data,
             active=form.active.data,
             google_card=form.google_card.data,
             google_wiki=form.google_wiki.data,
             mailing_url=form.mailing_url.data,
             working_agreement=form.working_agreement.data,
             definition_of_done=form.definition_of_done.data,
             definition_of_ready=form.definition_of_ready.data,
             continuous_integration_url=form.continuous_integration_url.data,
             backlog_url=form.backlog_url.data,
             status = form.status.data,
         )
         self.session.add(project)
         self.session.flush()
         self.flash(self._(u"Project added"))
         LOG(u"Project added")
         SelectorMapping.invalidate_for(tracker_id)
         return HTTPFound(location=self.request.url_for('/client/view', client_id=project.client_id))
     return dict(client=client, form=form)
コード例 #5
0
ファイル: __init__.py プロジェクト: tulustul/intranet
 def dispatch(self):
     project_id = self.request.GET.get('project_id')
     project =  Project.query.get(project_id)
     form = DeleteForm(self.request.POST)
     back_url = self.request.url_for('/client/view', client_id=project.client_id)
     if self.request.method == 'POST' and form.validate():
         self.session.delete(project)
         SelectorMapping.invalidate_for(project.tracker_id)
         return HTTPFound(location=back_url)
     return dict(
         type_name=u'project',
         title=project.name,
         url=self.request.url_for('/project/delete', project_id=project.id),
         back_url=back_url,
         form=form
     )
コード例 #6
0
 def dispatch(self):
     project_id = self.request.GET.get('project_id')
     project = Project.query.get(project_id)
     form = DeleteForm(self.request.POST)
     back_url = self.request.url_for('/client/view',
                                     client_id=project.client_id)
     if self.request.method == 'POST' and form.validate():
         DBSession.delete(project)
         SelectorMapping.invalidate_for(project.tracker_id)
         return HTTPFound(location=back_url)
     return dict(type_name=u'project',
                 title=project.name,
                 url=self.request.url_for('/project/delete',
                                          project_id=project.id),
                 back_url=back_url,
                 form=form)
コード例 #7
0
ファイル: bug.py プロジェクト: woliveira0101/intranet-open
 def get_project_id_(self, tracker, bug):
     return SelectorMapping(tracker).match(
         bug.id,
         bug.project_name,
         bug.component_name,
         bug.version,
     )
コード例 #8
0
    def dispatch(self):
        project_id = self.request.GET.get('project_id')
        project = DBSession.query(Project).filter(
            Project.id == project_id).one()
        form = ProjectForm(self.request.POST, obj=project)
        # hack, when user has no permision can_edit_projects (that means that he has only scrum perms)
        # we do not validate the form
        if self.request.method == 'POST' and (
                not self.request.has_perm('can_edit_projects')
                or form.validate()):
            project.working_agreement = form.working_agreement.data
            project.definition_of_done = form.definition_of_done.data
            project.definition_of_ready = form.definition_of_ready.data
            project.continuous_integration_url = form.continuous_integration_url.data
            project.backlog_url = form.backlog_url.data
            project.status = form.status.data
            project.sprint_tabs = form.sprint_tabs.data
            if self.request.has_perm('can_edit_projects'):
                project.name = form.name.data
                coordinator_id = int(
                    form.coordinator_id.data
                ) if form.coordinator_id.data.isdigit() else None
                project.coordinator_id = coordinator_id
                project.tracker_id = form.tracker_id.data
                project.turn_off_selectors = form.turn_off_selectors.data
                project.project_selector = form.project_selector.data
                project.component_selector = form.component_selector.data
                project.version_selector = form.version_selector.data
                project.ticket_id_selector = form.ticket_id_selector.data
                project.active = form.active.data
                project.google_card = form.google_card.data
                project.google_wiki = form.google_wiki.data
                project.mailing_url = form.mailing_url.data
                project.status = form.status.data

            self.flash(self._(u"Project saved"))
            LOG(u"Project saved")
            SelectorMapping.invalidate_for(project.tracker_id)
            return HTTPFound(location=self.request.url_for(
                '/project/edit', project_id=project.id))
        return dict(project_id=project.id, form=form)
コード例 #9
0
    def __call__(self, *args, **kwargs):
        config = ApplicationConfig.get_current_config(allow_empty=True)
        if config is None:
            WARN(u'Application config not found, emails cannot be checked')
            return
        trackers = dict(
            (tracker.mailer, tracker) for tracker in Tracker.query.filter(
                Tracker.mailer != None).filter(Tracker.mailer != ''))
        if not len(trackers):
            WARN(
                u'No trackers have mailers configured, email will not be checked'
            )
            return

        username = config.google_user_email.encode('utf-8')
        password = config.google_user_password.encode('utf-8')

        # TODO
        logins_mappings = dict(
            (tracker.id, TrackerCredentials.get_logins_mapping(tracker))
            for tracker in trackers.itervalues())
        selector_mappings = dict((tracker.id, SelectorMapping(tracker))
                                 for tracker in trackers.itervalues())

        # find all projects connected to the tracker
        projects = dict(
            (project.id, project) for project in Project.query.all())

        # all pre-conditions should be checked by now

        # start fetching
        fetcher = MailFetcher(
            username,
            password,
        )

        # ok, we have all mails, lets create timeentries from them
        extractor = TimeEntryMailExtractor(
            trackers,
            logins_mappings,
            projects,
            selector_mappings,
        )

        for msg in fetcher:
            timeentry = extractor.get(msg)
            if timeentry:
                DBSession.add(timeentry)
        transaction.commit()
コード例 #10
0
ファイル: mail.py プロジェクト: pytlakp/intranet-1
    def _run(self):
        config = ApplicationConfig.get_current_config(allow_empty=True)
        if config is None:
            WARN(u'Application config not found, emails cannot be checked')
            return self.mark_not_busy()
        trackers = dict(
            (tracker.mailer, tracker)
                for tracker in Tracker.query.filter(Tracker.mailer != None).filter(Tracker.mailer != '')
        )
        if not len(trackers):
            WARN(u'No trackers have mailers configured, email will not be checked')
            return self.mark_not_busy()

        username = config.google_user_email.encode('utf-8')
        password = config.google_user_password.encode('utf-8')

        # TODO
        logins_mappings = dict(
            (tracker.id, TrackerCredentials.get_logins_mapping(tracker))
                for tracker in trackers.itervalues()
        )
        selector_mappings = dict(
            (tracker.id, SelectorMapping(tracker))
                for tracker in trackers.itervalues()
        )

        # find all projects connected to the tracker
        projects = dict(
            (project.id, project)
                for project in Project.query.all()
        )

        # all pre-conditions should be checked by now

        # start fetching
        f = CustomClientFactory(username, password, self.mark_not_busy,
            trackers, logins_mappings, projects, selector_mappings)
        f.protocol = MailerPOP3Client
        reactor.connectSSL(self.POP3_SERVER, self.POP3_PORT, f, self.context_factory)
コード例 #11
0
 def resolve(self, bug):
     bug.owner = self.resolve_user(bug.owner)
     bug.reporter = self.resolve_user(bug.reporter)
     bug.project_id = SelectorMapping(self.tracker).match(
         bug.id, bug.project_name, bug.component_name, bug.version,
     )