Пример #1
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)
Пример #2
0
 def get_myself(self, user_id):
     query = Contact.all()
     query.filter("bind_user_id =", user_id)
     query.filter("creator_id =", user_id)
     if query.count() > 0:
         contact = query.get()
     else:
         contact = None
     return contact
Пример #3
0
 def fetch_contacts_created_by(self, user_id):
     query = Contact.all()
     query.what("uid")
     query.what("creator_id")
     query.what("contact_name")
     query.filter("creator_id =", user_id)
     query.order("-uid")
     query = query.filter("is_trashed =", False)
     def contact_proc(contact):
         """"""
     return query.fetch(model_proc=contact_proc)
Пример #4
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()
Пример #5
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)
Пример #6
0
 def link_contact_to_user(self, contact, bind_user_account):
     if strutil.is_empty(bind_user_account):
         contact.bind_user_id = model.EMPTY_UID
         return contact
     query = Contact.all()
     usermo = user.get_user(u_account=bind_user_account)
     if usermo is None:
         raise Error("cont_error_linkusernotfound", account=bind_user_account)
     
     query.filter("bind_user_id =", usermo.key())
     query.filter("creator_id =", contact.creator_id)
     if contact.key() != None:
         query.filter("uid !=", contact.key())
     if query.count() > 0:
         raise Error("cont_error_linkuserexisted", account=bind_user_account, contactName=query.get().contact_name)
     
     contact.bind_user_id = usermo.key()
     return contact
Пример #7
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)
Пример #8
0
 def empty_trash(self, user_id, modifier_id):
     query = Contact.all()
     query.filter("is_trashed =", True)
     query.filter("creator_id =", user_id)
     status = query.delete(modifier_id)
     return status