Example #1
0
 def move_contact(self, contact_id, group_ids, modifier_id):
     self.delete_contactgroups(modifier_id, contact_id)
     if type(group_ids) == int:
         group_ids = [group_ids]
     for group_id in group_ids:
         cg = ContactGroup()
         cg.contact_id = contact_id
         cg.group_id = group_id
         cg.put(modifier_id)
     return cg
Example #2
0
 def get_contactcount(self, is_trashed, user_id, group_id=None):
     query = Contact.all(alias="a")
     query.filter("a.is_trashed =", is_trashed)
     
     if group_id is not None and group_id != model.EMPTY_UID:
         query.model(ContactGroup.get_modelname(), alias="b", join="inner", on="a.uid = b.contact_id")
         query.filter("b.group_id =", group_id)
     else:
         query.filter("a.creator_id =", user_id)
         query.filter("a.uid not in", "(select contact_id from %s)" % ContactGroup.get_modelname(), wrapper=False)
     
     return query.count()
Example #3
0
 def resolve(self, query, **kwargs):
     if self._key != "gp" or self._value == None or (not isinstance(self._value, int)):
         return query
     self._value = int(self._value)
     if self._value == self.TRASH_GROUP_ID:
         query.filter("a.is_trashed =", True)
     else:
         if self._value == model.EMPTY_UID:
             query.filter("a.uid not in", "(select contact_id from %s)" % ContactGroup.get_modelname(), wrapper=False)
         else:
             alias = query.get_model_alias(ContactGroup.get_modelname())
             if alias is None:
                 query.model(ContactGroup.get_modelname(), alias="b", join="left", on="a.uid = b.contact_id")         
             query.filter("%s.group_id =" % alias, self._value)
     return query
Example #4
0
 def fetch_contacts(self, user_id, filters=None, limit=20, offset=0):
     
     def append_filters(query):
         for ft in filters:
             for (key, value) in ft.items():
                 for nr in CONTACTRESOLVERS:
                     nrinst = nr(key, value)
                     query.extend(nrinst)
                     
     query = Contact.all(alias="a")
     for key in Contact.get_properties(persistent=True).keys():
         query.what("a.%s" % key, alias=key)
     query.select("DISTINCT")
     group_ids = self.fetch_my_groups(user_id, onlyrtnids=True)
     if len(group_ids) > 0:
         query.model(ContactGroup.get_modelname(), alias="b", join="left", on="a.uid = b.contact_id")
         query.filter("b.group_id in", group_ids, parenthesis="(")
         query.filter("a.creator_id =", user_id, logic="or", parenthesis=")")
     else:
         query.filter("a.creator_id =", user_id)
     query.order("-a.uid")
     
     if filters != None:
         append_filters(query)
     
     if not query.has_filter("a.is_trashed"):
         query = query.filter("a.is_trashed =", False)
         
     def contact_proc(contact):
         contact.contactLeaves = self.fetch_contactleaves(contact.key())          
     return query.fetch(limit, offset, paging=True, model_proc=contact_proc)
Example #5
0
 def delete_contactgroups(self, modifier_id, contact_id=None, group_id=None):
     if contact_id is None and group_id is None:
         raise CoreError("the contact_id and group_id can't be None at the same time.")
     query = ContactGroup.all()
     if contact_id != None:
         query.filter("contact_id =", contact_id)
     if group_id != None:
         query.filter("group_id =", group_id)
     query.delete(modifier_id)
     return True
Example #6
0
 def fetch_contactgroups(self, contact_id=None, group_id=None):
     if contact_id is None and group_id is None:
         raise CoreError("contact_id and group_id can't be None at the same time.")
     query = ContactGroup.all()
     if contact_id != None:
         query.filter("contact_id =", contact_id)
     if group_id != None:
         query.filter("group_id =", group_id)
     query.order("contact_id")
     cgs = query.fetch()
     return cgs
Example #7
0
 def fetch_contacts_by_group(self, group_id):
     query = Contact.all(alias="a")
     query.select("DISTINCT")
     query.what("a.uid")
     query.what("a.creator_id")
     query.what("a.contact_name")
     query.model(ContactGroup.get_modelname(), alias="b", join="left", on="a.uid = b.contact_id")      
     query.filter("b.group_id =", group_id)
     query.order("-uid")
     query = query.filter("is_trashed =", False)
     def contact_proc(contact):
         """"""
     return query.fetch(model_proc=contact_proc)
Example #8
0
 def fetch_groups(self, user_id, is_shared=None, sharetome=None, withcontactcount=True):
     query = Group.all("a")
     if is_shared != None:
         query.filter("is_shared =", is_shared)
     if sharetome:
         query.model(ContactGroup.get_modelname(), alias="b", join="inner", on="a.uid=b.group_id")
         query.model(Contact.get_modelname(), alias="c", join="inner", on="c.uid=b.contact_id")
         query.filter("c.bind_user_id =", user_id)
         query.filter("a.is_shared =", True)
     else:
         query.filter("creator_id =", int(user_id))
     
     def group_proc(group):
         if withcontactcount:
             group.contactcount = self.get_contactcount(False, user_id, group_id=group.key())
         
     groups = query.fetch(model_proc=group_proc)
     return groups
Example #9
0
 def fetch_my_contacts(self, user_id):
     query = Contact.all(alias="a")
     query.select("DISTINCT")
     query.what("a.uid", alias="uid")
     query.what("a.contact_name", alias="contact_name")
     query.what("a.creator_id", alias="creator_id")
     group_ids = self.fetch_my_groups(user_id, onlyrtnids=True)
     if len(group_ids) > 0:
         query.model(ContactGroup.get_modelname(), alias="b", join="left", on="a.uid = b.contact_id")
         query.filter("b.group_id in", group_ids, parenthesis="(")
         query.filter("a.creator_id =", user_id, logic="or", parenthesis=")")
     else:
         query.filter("a.creator_id =", user_id)
     query.order("-a.uid")
     
     query = query.filter("a.is_trashed =", False)
     def contact_proc(contact):
         """"""
     return query.fetch(model_proc=contact_proc)
Example #10
0
 def delete_contactgroup(self, resource_id, modifier_id):
     contactgroup = ContactGroup.get_by_key(resource_id)
     contactgroup.delete(modifier_id)
     return True