summaryrefslogtreecommitdiffstats
path: root/askbot/models/user.py
diff options
context:
space:
mode:
Diffstat (limited to 'askbot/models/user.py')
-rw-r--r--askbot/models/user.py70
1 files changed, 65 insertions, 5 deletions
diff --git a/askbot/models/user.py b/askbot/models/user.py
index 6601fc7e..5fb5b991 100644
--- a/askbot/models/user.py
+++ b/askbot/models/user.py
@@ -18,6 +18,7 @@ from askbot.utils import functions
from askbot.models.base import BaseQuerySetManager
from askbot.models.tag import Tag
from askbot.models.tag import clean_group_name#todo - delete this
+from askbot.models.tag import get_tags_by_names
from askbot.forms import DomainNameField
from askbot.utils.forms import email_is_allowed
@@ -56,7 +57,7 @@ class ActivityManager(models.Manager):
mentioned_at = None,
mentioned_in = None,
reported = None
- ):
+ ):
#todo: automate this using python inspect module
kwargs = dict()
@@ -95,7 +96,7 @@ class ActivityManager(models.Manager):
return mention_activity
def get_mentions(
- self,
+ self,
mentioned_by = None,
mentioned_whom = None,
mentioned_at = None,
@@ -317,8 +318,8 @@ class EmailFeedSetting(models.Model):
else:
reported_at = '%s' % self.reported_at.strftime('%d/%m/%y %H:%M')
return 'Email feed for %s type=%s, frequency=%s, reported_at=%s' % (
- self.subscriber,
- self.feed_type,
+ self.subscriber,
+ self.feed_type,
self.frequency,
reported_at
)
@@ -425,7 +426,7 @@ class GroupQuerySet(models.query.QuerySet):
class GroupManager(BaseQuerySetManager):
"""model manager for askbot groups"""
-
+
def get_query_set(self):
return GroupQuerySet(self.model)
@@ -592,3 +593,62 @@ class Group(AuthGroup):
def save(self, *args, **kwargs):
self.clean()
super(Group, self).save(*args, **kwargs)
+
+class BulkTagSubscriptionManager(BaseQuerySetManager):
+
+ def create(self, tag_names=[],
+ user_list=[], group_list=[],
+ tag_author=None, **kwargs):
+
+ new_object = super(BulkTagSubscriptionManager, self).create(**kwargs)
+ tag_name_list = []
+
+ if tag_names:
+ tags, new_tag_names = get_tags_by_names(tag_names)
+ if new_tag_names:
+ assert(tag_author)
+
+ tags_id_list= [tag.id for tag in tags]
+ tag_name_list = [tag.name for tag in tags]
+
+ for tag_name in new_tag_names:
+ new_tag = Tag.objects.create(name=tagname, created_by=tag_author)
+ tags_id_list.append(new_tag.id)
+ tag_name_list.append(new_tag.name)
+
+ new_object.tags.add(*tags_id_list)
+
+ if user_list:
+ user_ids = []
+ for user in user_list:
+ user_ids.append(user.id)
+ user.mark_tags(tagnames=tag_name_list,
+ reason='subscribed',
+ action='add')
+
+ new_object.users.add(*user_ids)
+
+ if group_list:
+ group_ids = []
+ for group in group_list:
+ #TODO: do the group marked tag thing here
+ group_ids.append(group.id)
+ new_object.groups.add(*group_ids)
+
+ return new_object
+
+
+class BulkTagSubscription(models.Model):
+ date_added = models.DateField(auto_now_add=True)
+ tags = models.ManyToManyField(Tag)
+ users = models.ManyToManyField(User)
+ groups = models.ManyToManyField(Group)
+
+ objects = BulkTagSubscriptionManager()
+
+ def tag_list(self):
+ return [tag.name for tag in self.tags.all()]
+
+ class Meta:
+ app_label = 'askbot'
+ ordering = ['-date_added']