Some stuff done
authorMarek Marecki <triviuss@gmail.com>
Wed, 5 Jun 2013 19:43:39 +0000 (21:43 +0200)
committerMarek Marecki <triviuss@gmail.com>
Wed, 5 Jun 2013 19:43:39 +0000 (21:43 +0200)
diaspy/models.py
diaspy/people.py
diaspy/streams.py
manual/people.mdown

index b5a7d50853bd10c7fc075151add9492bec2d130b..5d3922695eeac539154be6302b3764f8cf856464 100644 (file)
@@ -172,8 +172,26 @@ class Aspect():
                 'aspect_id': self.id,
                 'person_id': user_id}
 
-        request = self.connection.delete('aspect_memberships/42.json', data=data)
+        request = self.connection.delete('aspect_memberships/{0}.json'.format(self.id), data=data)
 
         if request.status_code != 200:
             raise Exception('wrong status code: {0}'.format(request.status_code))
         return request.json()
+
+
+class Notifications():
+    """This class represents notifications of a user.
+    """
+    def __init__(self, connection):
+        self._connection = connection
+
+    def get(self):
+        """Returns list of notifications.
+        """
+        request = self._connection.get('notifications.json')
+        
+        if r.status_code != 200:
+            raise Exception('status code: {0}: cannot retreive notifications'.format(r.status_code))
+
+        notifications = request.json()
+        return notifications
index a5c25461c3ce3943a7c0abf3d6444b87c05bb038..79e2582e9436cdab7f6768b29b36ff1dca89a3a6 100644 (file)
@@ -1,5 +1,6 @@
 import re
 from diaspy.streams import Outer
+from diaspy.models import Aspect
 
 
 class User:
@@ -88,34 +89,47 @@ class Contacts():
     def __init__(self, connection):
         self._connection = connection
 
-    def get_only_sharing(self):
-        """Returns contacts who are only sharing with you.
+    def add(self, user_id, aspect_ids):
+        """Add user to aspects of given ids.
 
-        :returns: list
+        :param user_id: user guid
+        :type user_id: str
+        :param aspect_ids: list of aspect ids
+        :type aspect_ids: list
         """
-        params = {'set': 'only_sharing'}
-        request = self._connection.get('contacts.json', params=params)
-        if request.status_code != 200:
-            raise Exception('status code {0}: cannot get contacts'.format(request.status_code))
-        contacts = [User(user['guid']) for user in request.json()]
-        return contacts
+        for aid in aspect_ids:
+            Aspect(self._connection, aid).addUser(user_id)
 
-    def get_all(self):
-        """Returns list of all contacts.
+    def remove(self, user_id, aspect_ids):
+        """Remove user from aspects of given ids.
 
-        :returns: list
+        :param user_id: user guid
+        :type user_id: str
+        :param aspect_ids: list of aspect ids
+        :type aspect_ids: list
         """
-        params = {'set': 'all'}
-        request = self._connection.get('contacts.json', params=params)
-        if request.status_code != 200:
-            raise Exception('status code {0}: cannot get contacts'.format(request.status_code))
-        contacts = [User(user['guid']) for user in request.json()]
-        return contacts
+        for aid in aspect_ids:
+            Aspect(self._connection, aid).removeUser(user_id)
 
-    def get(self):
+    def get(self, set=''):
         """Returns list of user contacts.
+        Contact is a User() who is in one or more of user's
+        aspects.
+
+        By default, it will return list of users who are in logged
+        user aspects.
+        If `set` is `all` it will also include users who only share
+        with logged user and are not in his/hers aspects.
+        If `set` is `only_sharing` it will return users who are only
+        sharing with logged user and ARE NOT in his/hers aspects.
+
+        :param set: if passed could be 'all' or 'only_sharing'
+        :type set: str
         """
-        request = self._connection.get('contacts.json')
+        params = {}
+        if set: params['set'] = set
+
+        request = self._connection.get('contacts.json', params=params)
         if request.status_code != 200:
             raise Exception('status code {0}: cannot get contacts'.format(request.status_code))
         contacts = [User(user['guid']) for user in request.json()]
index 4e5d78e1db87e77fe25c9140e125c1b8e796a553..64d5c8487ff79ee1827beab1d281009b506d4b8d 100644 (file)
@@ -1,6 +1,6 @@
 import json
 import time
-from diaspy.models import Post
+from diaspy.models import Post, Aspect
 
 """Docstrings for this module are taken from:
 https://gist.github.com/MrZYX/01c93096c30dc44caf71
@@ -255,7 +255,7 @@ class Aspects(Generic):
         Status code 422 is accepted because it is returned by D* when
         you try to add aspect already present on your aspect list.
 
-        :returns: id of created aspect
+        :returns: Aspect() object of just created aspect
         """
         data = {'authenticity_token': self._connection.get_token(),
                 'aspect[name]': aspect_name,
@@ -266,7 +266,7 @@ class Aspects(Generic):
             raise Exception('wrong status code: {0}'.format(request.status_code))
 
         id = self.getAspectID(aspect_name)
-        return id
+        return Aspect(self._connection, id)
 
     def remove(self, aspect_id=-1, name=''):
         """This method removes an aspect.
index 75e5be5b22085321596b652c09e8bdca34bb9f3d..e4563d6cdeb34a15caee989c1653e81ead9f3630 100644 (file)
@@ -43,6 +43,30 @@ Also `User()` object contains a stream for this user.
 * `stream`, `diaspy.streams.Outer`, stream of the user (provides all methods of generic stream);
 
 
+====
+
+
+#### `Contacts()` object
+
+This is object abstracting list of user's contacts. 
+It may be slightly confusing to use and reading just docs could be not enough. 
+
+The only method of this object is `get()` and its only parameter is `set` which 
+is optional (defaults to empty string).  
+If called without specifying `set` `get()` will return list of users (`User()` objects) 
+who are in your aspects.
+
+Optional `set` parameter can be either `all` or `only_sharing`. 
+If passed as `only_sharing` it will return only users who are not in your aspects but who share 
+with you - which means that you are in their aspects.
+If passed as `all` it will return list of *all* your contacts - those who are in your aspects and 
+those who are not.
+
+
+To sum up: people *who you share with* are *in* your aspects. People *who share with you* have you in 
+their aspects. These two states can be mixed.
+
+
 ----
 
 ###### Manual for `diaspy`, written by Marek Marecki