From b7c0d2da3b4c637a51d54674f48630f41e018919 Mon Sep 17 00:00:00 2001 From: Zergey Loshkarev <saloshkarev@miem.hse.ru> Date: Fri, 2 Jul 2021 22:57:07 +0300 Subject: [PATCH] all changes in one commit... --- get_from_tagia.py | 10 ++++++---- list_page.tmpl | 8 ++++++++ main.py | 2 +- page_writer.py | 17 +++++++++++++++-- person_page.tmpl | 2 +- 5 files changed, 31 insertions(+), 8 deletions(-) create mode 100644 list_page.tmpl diff --git a/get_from_tagia.py b/get_from_tagia.py index 8de3e1a..178b75a 100644 --- a/get_from_tagia.py +++ b/get_from_tagia.py @@ -10,7 +10,7 @@ class Person(): Person class for describing informatron about users to page writer ''' - def __init__(self, member, user) -> (None): + def __init__(self, member, user, role_name) -> (None): ''' Constructor to Person object ''' @@ -18,9 +18,9 @@ class Person(): self.username = user.username self.photo = user.big_photo self.bio = user.bio - self.role_name = member.role_name[0], + self.role_name = role_name - def add_link(self, link): + def set_link(self, link): self.link = link class TaigaReader(): @@ -41,7 +41,9 @@ class TaigaReader(): Create Person with member and request to getting information from user ''' user = self._api.users.get(member.user) - return Person(member, user) + roles = self._api.projects.get_by_slug(self._project_slug).list_roles() + role_name = str(roles.get(id=member.role).name) + return Person(member, user, role_name) def get_persons(self): ''' diff --git a/list_page.tmpl b/list_page.tmpl new file mode 100644 index 0000000..21da375 --- /dev/null +++ b/list_page.tmpl @@ -0,0 +1,8 @@ +# Список участников проектной школы +{% for role, persons in persons_by_role.items() %} +## {{role}} +{% for person in persons %} +* [{{person.full_name}}]({{person.link}}) +{% endfor %} +--- +{% endfor %} \ No newline at end of file diff --git a/main.py b/main.py index 9c129ab..b3f50bb 100644 --- a/main.py +++ b/main.py @@ -16,6 +16,6 @@ for person in reader.get_persons(): if not is_succes: print(f'Page not created for: {person.username}, message: {message}') -# writer.write_list_page(persons_by_roles) +writer.write_list_page(persons_by_roles) print('Pages created') \ No newline at end of file diff --git a/page_writer.py b/page_writer.py index d387cbd..ab61589 100644 --- a/page_writer.py +++ b/page_writer.py @@ -11,10 +11,12 @@ class PageWriter(): def __init__( self, wiki_config, person_template='person_page.tmpl', + list_template='list_page.tmpl', query_template='query.tmpl' ): env = Environment(loader=FileSystemLoader('./')) self._user_template = env.get_template(person_template) + self._list_template = env.get_template(list_template) self._query_template = env.get_template(query_template) self._path = wiki_config['path'] sample_transport=RequestsHTTPTransport( @@ -37,13 +39,24 @@ class PageWriter(): path=self._path + person.username, title=person.full_name ) - print(query_text) resp = self._client.execute( gql(query_text) )['pages']['create']['responseResult'] link = '' if resp['succeeded']: - link = './' + person.user_name + link = './' + person.username person.set_link(link) return resp['succeeded'], resp['message'] + + def write_list_page(self, persons_by_role, title='Список участников'): + content = self._list_template.render(persons_by_role=persons_by_role) + query_text = self._query_template.render( + content=_normalise_str(content), + path=self._path + 'list', + title=title + ) + resp = self._client.execute( + gql(query_text) + )['pages']['create']['responseResult'] + return resp['succeeded'], resp['message'] diff --git a/person_page.tmpl b/person_page.tmpl index 716ed11..56e18d6 100644 --- a/person_page.tmpl +++ b/person_page.tmpl @@ -1,4 +1,4 @@ -# {{person.full_name}} {{person.full_name}} +# {{person.full_name}} ({{person.role_name}}) <img src='{{person.photo}}'> --- -- GitLab