#    This program is free software: you can redistribute it and/or modify
#    it under the terms of the GNU General Public License as published by
#    the Free Software Foundation, either version 3 of the License, or
#    (at your option) any later version.
#
#    This program is distributed in the hope that it will be useful,
#    but WITHOUT ANY WARRANTY; without even the implied warranty of
#    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
#    GNU General Public License for more details.
#
#    You should have received a copy of the GNU General Public License
#    along with this program.  If not, see <http://www.gnu.org/licenses/>.


from parse_rest.connection import API_ROOT
from parse_rest.datatypes import ParseResource
from parse_rest.query import QueryManager


class Role(ParseResource):
    '''
    A Role is like a regular Parse object (can be modified and saved) but
    it requires additional methods and functionality
    '''
    ENDPOINT_ROOT = '/'.join([API_ROOT, 'roles'])

    @property
    def className(self):
        return '_Role'

    def __repr__(self):
        return '<Role:%s (Id %s)>' % (getattr(self, 'name', None), self.objectId)


Role.Query = QueryManager(Role)

@@ -1183,16 +1183,769 @@
 jectId)%0A
+    %0A    def removeRelation(self, key, className, objectsId):%0A        self.manageRelation('RemoveRelation', key, className, objectsId)%0A%0A    def addRelation(self, key, className, objectsId):%0A        self.manageRelation('AddRelation', key, className, objectsId)%0A%0A    def manageRelation(self, action, key, className, objectsId):%0A        objects = %5B%7B%0A                    %22__type%22: %22Pointer%22,%0A                    %22className%22: className,%0A                    %22objectId%22: objectId%0A                    %7D for objectId in objectsId%5D%0A%0A        payload = %7B%0A            key: %7B%0A                 %22__op%22: action,%0A                 %22objects%22: objects%0A                %7D%0A            %7D%0A        self.__class__.PUT(self._absolute_url, **payload)%0A        self.__dict__%5Bkey%5D = ''%0A
 %0A%0ARole.Q

Handle adding and removing relations from Roles.