From 03d983fea58c4cb5b1a00edf1adf85be346da54c Mon Sep 17 00:00:00 2001 From: Marek Marecki Date: Sun, 23 Apr 2017 16:38:34 +0200 Subject: [PATCH] Fetching users from aspect works --- diaspy/models.py | 60 +++++------------------------------------------- 1 file changed, 6 insertions(+), 54 deletions(-) diff --git a/diaspy/models.py b/diaspy/models.py index c58f38b..e8396b3 100644 --- a/diaspy/models.py +++ b/diaspy/models.py @@ -22,63 +22,15 @@ class Aspect(): def __init__(self, connection, id, name=None): self._connection = connection self.id, self.name = id, name + self._cached = [] - def _getajax(self): - """Returns HTML returned when editing aspects via web UI. - """ - start_regexp = re.compile('') - return ajax[begin:end] - - def _extractusernames(self, ajax): - """Extracts usernames and GUIDs from ajax returned by Diaspora*. - Returns list of two-tuples: (guid, diaspora_name). - """ - userline_regexp = re.compile('[\w()*@. -]+') - return [(line[17:33], re.escape(line[35:-4])) for line in userline_regexp.findall(ajax)] - - def _extractpersonids(self, ajax, usernames): - """Extracts `person_id`s and usernames from ajax and list of usernames. - Returns list of two-tuples: (username, id) - """ - personid_regexp = 'alt=["\']{0}["\'] class=["\']avatar["\'] data-person_id=["\'][0-9]+["\']' - personids = [re.compile(personid_regexp.format(name)).search(ajax).group(0) for guid, name in usernames] - for n, line in enumerate(personids): - i, id = -2, '' - while line[i].isdigit(): - id = line[i] + id - i -= 1 - personids[n] = (usernames[n][1], id) - return personids - - def _defineusers(self, ajax, personids): - """Gets users contained in this aspect by getting users who have `delete` method. - """ - method_regexp = 'data-method="delete" data-person_id="{0}"' - users = [] - for name, id in personids: - if re.compile(method_regexp.format(id)).search(ajax): users.append(name) - return users - - def _getguids(self, users_in_aspect, usernames): - """Defines users contained in this aspect. - """ - guids = [] - for guid, name in usernames: - if name in users_in_aspect: guids.append(guid) - return guids - - def getUsers(self): + def getUsers(self, fetch = True): """Returns list of GUIDs of users who are listed in this aspect. """ - ajax = self._getajax() - usernames = self._extractusernames(ajax) - personids = self._extractpersonids(ajax, usernames) - users_in_aspect = self._defineusers(ajax, personids) - return self._getguids(users_in_aspect, usernames) + if fetch: + request = self._connection.get('contacts.json?a_id={}'.format(self.id)) + self._cached = request.json() + return self._cached def addUser(self, user): """Add user to current aspect. -- 2.25.1