author | Daniel Hans <Daniel.M.Hans@gmail.com> |
Sat, 14 Nov 2009 18:20:06 +0100 | |
changeset 3089 | 87e138ed6d99 |
child 3090 | cdbbe9ca465e |
permissions | -rw-r--r-- |
3089
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
1 |
#!/usr/bin/python2.5 |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
2 |
# |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
3 |
# Copyright 2009 the Melange authors. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
4 |
# |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
5 |
# Licensed under the Apache License, Version 2.0 (the "License"); |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
6 |
# you may not use this file except in compliance with the License. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
7 |
# You may obtain a copy of the License at |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
8 |
# |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
9 |
# http://www.apache.org/licenses/LICENSE-2.0 |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
10 |
# |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
11 |
# Unless required by applicable law or agreed to in writing, software |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
12 |
# distributed under the License is distributed on an "AS IS" BASIS, |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
13 |
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
14 |
# See the License for the specific language governing permissions and |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
15 |
# limitations under the License. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
16 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
17 |
"""The module which contains functions to manage tags in Melange. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
18 |
""" |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
19 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
20 |
__authors__ = [ |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
21 |
'"Daniel Hans" <daniel.m.hans@gmail.com>', |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
22 |
] |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
23 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
24 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
25 |
class TagsService(object): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
26 |
"""Helper class for tags corresponding to a model. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
27 |
""" |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
28 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
29 |
def __init__(self, tag_names): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
30 |
"""Defines tag names. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
31 |
""" |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
32 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
33 |
self.tag_names = tag_names |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
34 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
35 |
def prepareTagsForStoring(self, fields, scope): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
36 |
"""For those fields which represent task values it prepares actual |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
37 |
tag entries. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
38 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
39 |
Args: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
40 |
fields: a dict mapping tag names with values |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
41 |
scope: scope for the tag that will be stored |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
42 |
""" |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
43 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
44 |
for tag_name, tag_value in fields.iteritems(): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
45 |
if tag_name in self.tag_names: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
46 |
fields[tag_name] = {'tags': tag_value, 'scope': scope} |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
47 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
48 |
def setTagValuesForEntity(self, entity, fields): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
49 |
"""Sets tag values for a particular entity based on fields dictionary. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
50 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
51 |
Args: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
52 |
entity: an entity which is to be tagged |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
53 |
fields: a dict mapping tag names with values |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
54 |
""" |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
55 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
56 |
if not entity: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
57 |
return None |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
58 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
59 |
for tag_name, tag_value in fields.iteritems(): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
60 |
if tag_name in self.tag_names: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
61 |
setattr(entity, tag_name, tag_value) |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
62 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
63 |
return entity |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
64 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
65 |
def removeAllTagsForEntity(self, entity): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
66 |
"""Removes all tags defined for a particular entity. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
67 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
68 |
Args: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
69 |
entity: entity which the tags will be removed for |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
70 |
""" |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
71 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
72 |
self.removeTagsForEntity(entity, self.tag_names) |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
73 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
74 |
def removeTagsForEntity(self, entity, tag_names): |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
75 |
"""Removes all tags values for a particular entity based on tag_names |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
76 |
list with name of the tags that are to be removed. |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
77 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
78 |
Args: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
79 |
entity: entity which the tags will be removed for |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
80 |
tag_names: list of tags to remove |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
81 |
""" |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
82 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
83 |
if not entity: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
84 |
return |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
85 |
|
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
86 |
for tag_name in tag_names: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
87 |
if tag_name in tag_names: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
88 |
cls = entity.tags_class(tag_name) |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
89 |
tags = cls.get_tags_for_key(entity.key()) |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
90 |
for tag in tags: |
87e138ed6d99
tags.py module, which contains helper class for tags, is added.
Daniel Hans <Daniel.M.Hans@gmail.com>
parents:
diff
changeset
|
91 |
tag.remove_tagged(entity.key()) |