コード例 #1
0
    def fetch_emails(self):
        imap = imaplib.IMAP4_SSL(self.imaps_server, self.imaps_port)
        imap.login(self.username, self.password)
        imap.select(self.imaps_folder)
        typ, data = imap.search(None, 'SUBJECT', 'Parlamentspapiere')
        for num in data[0].split():
            typ, data = imap.fetch(num, '(RFC822)')
            # print('Message %s\n%s\n' % (num, data[0][1]))
            drucksachen = DrucksachenExtractor(data[0][1]).parse()

            for d in drucksachen:

                f = bytearray()

                r = requests.get(d.link, stream=True)
                '''for chunk in r.iter_content(chunk_size=1024):
                   if chunk: # filter out keep-alive new chunks
                        f += chunk
                '''
                if r.status_code == 200:
                    headers = {'content-type': 'application/octet-stream'}
                    res = requests.post(
                            self.redmine_url + '/uploads.json?key=' + self.redmine_api_key,
                            data = r, headers = headers
                            # files={'file': f}, headers = headers
                        )
                    if res.status_code != 201: # 201 == Created
                        print('requests.post: ', res.status_code)
                        self.upload = None
                    else:
                        token = res.json()['upload']['token']

                        self.upload = [{
                                'token': token,
                                'filename': d.number + '.pdf',
                                'description': d.number,
                                'content': 'application/pdf'
                            }]
                else:
                    self.upload = None

                issue = Issue({
                        'subject': d.number + ":" + d.title ,
                        'project_id': 62, # 'Dokumente'
                        'tracker_id': 11,
                        'description': d.link,
                        'uploads': self.upload
                    })

                res = issue.save()

                if not res:
                    print(issue.subject, '=> ', res)

            status, msg_ids = imap.copy(num, self.imaps_folder_read)
            # TODO: print(status)
            imap.store(num, '+FLAGS', '\\Deleted')

        imap.close()
        imap.logout()
コード例 #2
0
def add_sample_projects(session, username):
    for project_data in projects_data:
        name = truncate(project_data['name'], 40)
        description = truncate(project_data['description'], 90)
        project = Project(name=name, description=description, owner=username)
        issues = project_data['issues']
        count = len(issues)
        counter = Counter()
        for (i, issue_data) in enumerate(issues):
            title = truncate(issue_data['title'], 40)
            description = truncate(issue_data['description'], 90)

            if i < count * .1:
                status = 3
            elif i < count * .3:
                status = 2
            elif i < count * .6:
                status = 1
            else:
                status = 0

            index = counter[status]
            counter[status] += 1

            issue = Issue(title=title, description=description, project=project, type=get_type(), assignee='',
                          storypoints=get_storypoints(), status=status, priority=get_priority(), index=index)
            session.add(issue)
        session.add(project)
    session.commit()
コード例 #3
0
    def _parse_issue(element):
        """Parse element as issue.

        Issue must not contain subelements and attributes.

        :param element: an instance of Element (from ElementTree)
        :return: an instance of model.Issue
        """
        if len(element) != 0:
            raise ParseError("Unexpected subelements in issue")
        if "creator" not in element.attrib:
            raise ParseError("No creator in issue")
        if len(element.attrib) != 1:
            raise ParseError("Unexpected attributes in issue")

        return Issue(creator=element.attrib["creator"],
                     value=element.text if element.text is not None else "")
コード例 #4
0
ファイル: api.py プロジェクト: eozgit/pytrack-flask
def create_issue(project_id):
    username = get_username(request)
    project = Project.query.get(project_id)
    if project.owner != username:
        abort(403)

    body = request.get_json()
    data = issue_schema.load(body)
    index = max([issue.index for issue in project.issues]) + 1
    issue = Issue(title=data['title'],
                  description=data['description'],
                  type=data['type'],
                  storypoints=data['storypoints'],
                  priority=data['priority'],
                  project_id=project.id,
                  status=0,
                  index=index)
    db.session.add(issue)
    db.session.commit()

    result = issue_schema.dump(Issue.query.get(issue.id))
    return Response(json.dumps(result),
                    mimetype='application/json',
                    status=200)
コード例 #5
0
    u"""strings::S_PROTOCOL_VERSION] = SMember("""
    u"""TNumberSchemaItem<int>::create(), true);\n"""
    u"""params_members[ns_smart_device_link::ns_json_handler::"""
    u"""strings::S_PROTOCOL_TYPE] = SMember("""
    u"""TNumberSchemaItem<int>::create(), true);\n""")

EXPECTED_REQ_RESP_RESULT = "".join([EXPECTED_NOTIFICATION_RESULT, (
    u"""params_members[ns_smart_device_link::ns_json_handler::"""
    u"""strings::S_CORRELATION_ID] = SMember("""
    u"""TNumberSchemaItem<int>::create(), true);\n""")])

DESCRIPTION = [u"Description Line1", u"Description Line2"]

DESIGN_DESCRIPTION = [u"Design Line1"]

ISSUES = [Issue(value=u"Issue1"),
          Issue(value=u"Issue2"),
          Issue(value=u"Issue3")]

TODOS = [u"Do1", u"Do2"]


class Test(unittest.TestCase):
    """Test for SLDRPC SmartFactory generator.

    This class holds set of test cases for the SDLRPC SmartFactory generator.

    """

    def test_gen_schema_params_fill(self):
        """Test feature that allows to create format specific PARAMS.
コード例 #6
0
 def populate_issue_list(self, gitlab_issue_list: list):
     for issue in gitlab_issue_list:
         newIssue = Issue(issue)
         self.__issue_list.append(newIssue)
コード例 #7
0
  val_2 = 100,

  /**
   * @brief val_3.
   */
  val_3
};
} // E2
"""

DESCRIPTION = [u"Description Line1", u"Description Line2"]

DESIGN_DESCRIPTION = [u"Design Line1"]

ISSUES = [
    Issue(value=u"Issue1"),
    Issue(value=u"Issue2"),
    Issue(value=u"Issue3")
]

TODOS = [u"Do1", u"Do2"]


class Test(unittest.TestCase):
    """Test for SmartFactory base generator.

    This class holds set of test cases for the SmartFactory base generator.

    """
    def test_gen_comment(self):
        """Test generation of the source code comments.
コード例 #8
0
def create_issue(title, message):
    issue = Issue(title=title, description=message)
    issue.save()
コード例 #9
0
 def __issue_to_bson(issue: Issue):
     return {
         "_id": (issue.issue_id, issue.project_id)
     }.update(issue.to_dict())