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