1010
1111
1212class Tag (PropertySet ):
13+ """ Define a Tag properties"""
1314 _attrs = [
1415 Prop ('oc:id' ),
1516 Prop ('oc:display-name' , json = 'name' , default = 'default_tag_name' ),
@@ -22,19 +23,27 @@ class Tag(PropertySet):
2223class SystemTags (WebDAVApiWrapper ):
2324 """ SystemTags API wrapper """
2425 API_URL = '/remote.php/dav/systemtags'
25- JSON_ABLE = True
2626
2727 def get_sytemtag (self , name , fields = None , json_output = None ):
28+ """
29+ Get attributes of a nammed tag
30+
31+ :param name (str): tag name
32+ :param fields (<list>str): field names
33+ :returns: requester response with <list>Tag in data
34+ """
2835 if not fields :
2936 fields = Tag ._fields
30- resp = self .requester .propfind (data = Tag .build_xml_propfind (
31- fields = {'oc' : ['display-name' ] + fields }))
37+ resp = self .requester .propfind (
38+ data = Tag .build_xml_propfind (fields = {
39+ 'oc' : ['display-name' ] + fields
40+ }))
3241 if json_output is None :
3342 json_output = self .json_output
3443 return Tag .from_response (resp ,
3544 json_output = json_output ,
3645 init_attrs = True ,
37- filtered = ( lambda t : t .display_name == name ) )
46+ filtered = lambda t : t .display_name == name )
3847
3948 def get_systemtags (self ):
4049 """
@@ -43,8 +52,9 @@ def get_systemtags(self):
4352 :returns: requester response with <list>Tag in data
4453 """
4554 resp = self .requester .propfind (
46- data = Tag .build_xml_propfind (use_default = True ))
47- return Tag .from_response (resp , json_output = (self .json_output ))
55+ data = Tag .build_xml_propfind (use_default = True )
56+ )
57+ return Tag .from_response (resp , json_output = self .json_output )
4858
4959 def create_systemtag (self , name , ** kwargs ):
5060 """
@@ -53,9 +63,12 @@ def create_systemtag(self, name, **kwargs):
5363 :param name: tag name
5464 :returns: requester response with tag id as data
5565 """
56- data = (Tag .default_get )(name = name , ** kwargs )
57- resp = self .requester .post (data = (json .dumps (data )), headers = {
58- 'Content-Type' : 'application/json' })
66+ data = Tag .default_get (name = name , ** kwargs )
67+ resp = self .requester .post (
68+ data = json .dumps (data ),
69+ headers = {
70+ 'Content-Type' : 'application/json'
71+ })
5972 if resp .is_ok :
6073 resp .data = int (
6174 resp .raw .headers ['Content-Location' ].split ('/' )[(- 1 )])
@@ -64,7 +77,7 @@ def create_systemtag(self, name, **kwargs):
6477 def delete_systemtag (self , name = None , tag_id = None ):
6578 """
6679 Delete systemtag
67-
80+
6881 :param name (str): tag name, not required it tag_id is provided
6982 :tag_id (int): tag id, not required if name is provided
7083
@@ -74,16 +87,15 @@ def delete_systemtag(self, name=None, tag_id=None):
7487 resp = self .get_sytemtag (name , ['id' ], json_output = False )
7588 if resp .data :
7689 tag_id = resp .data [0 ].id
77- elif tag_id :
78- resp = self .requester .delete (url = (str (tag_id )))
90+ if not tag_id : # lint only
91+ return None
92+ resp = self .requester .delete (url = (str (tag_id )))
7993 return resp
8094
8195
8296class SystemTagsRelation (WebDAVApiWrapper ):
8397 """ SystemTagsRelation API wrapper """
8498 API_URL = '/remote.php/dav/systemtags-relations/files'
85- JSON_ABLE = True
86- REQUIRE_CLIENT = True
8799
88100 def _get_fileid_from_path (self , path ):
89101 """ Tricky function to fetch file """
@@ -121,7 +133,8 @@ def get_systemtags_relation(self, file_id=None, **kwargs):
121133
122134 :returns: requester response with <list>Tag in data
123135 """
124- file_id , = self ._arguments_get (['file_id' ], locals ())
136+ file_id , = self ._arguments_get (['file_id' ], dict (file_id = file_id ,
137+ ** kwargs ))
125138 data = Tag .build_xml_propfind ()
126139 resp = self .requester .propfind (additional_url = file_id , data = data )
127140 return Tag .from_response (resp , json_output = (self .json_output ))
@@ -138,7 +151,7 @@ def delete_systemtags_relation(self, file_id=None, tag_id=None, **kwargs):
138151 :returns: requester response
139152 """
140153 file_id , tag_id = self ._arguments_get ([
141- 'file_id' , 'tag_id' ], locals ( ))
154+ 'file_id' , 'tag_id' ], dict ( file_id = file_id , tag_id = tag_id , ** kwargs ))
142155 resp = self .requester .delete (url = ('{}/{}' .format (file_id , tag_id )))
143156 return resp
144157
@@ -163,6 +176,5 @@ def add_systemtags_relation(self, file_id=None, tag_id=None, **kwargs):
163176 tag_id = resp .data
164177 if not file_id :
165178 raise ValueError ('No file found' )
166- data = Tag .build_xml_propfind ()
167179 resp = self .requester .put (url = ('{}/{}' .format (file_id , tag_id )))
168180 return resp
0 commit comments