mirror of
https://github.com/chatmail/core.git
synced 2026-05-12 19:36:32 +03:00
address @hocuri comment -- remove as_contact() as it's synonym with create_contact
and the latter is already an established API and conveys better that a contact object will be created if it doesn't exist.
This commit is contained in:
@@ -213,21 +213,18 @@ class Account(object):
|
|||||||
"""
|
"""
|
||||||
return Contact(self, const.DC_CONTACT_ID_SELF)
|
return Contact(self, const.DC_CONTACT_ID_SELF)
|
||||||
|
|
||||||
def create_contact(self, addr, name=None):
|
def create_contact(self, obj, name=None):
|
||||||
""" create a (new) Contact. If there already is a Contact
|
""" create a (new) Contact or return an existing one.
|
||||||
with that e-mail address, it is unblocked and its display
|
|
||||||
name is updated.
|
|
||||||
|
|
||||||
:param addr: email-address, Account or Contact instance.
|
Calling this method will always resulut in the same
|
||||||
:param name: display name for this contact (optional)
|
underlying contact id. If there already is a Contact
|
||||||
|
with that e-mail address, it is unblocked and its display
|
||||||
|
`name` is updated if specified.
|
||||||
|
|
||||||
|
:param obj: email-address, Account or Contact instance.
|
||||||
|
:param name: (optional) display name for this contact
|
||||||
:returns: :class:`deltachat.contact.Contact` instance.
|
:returns: :class:`deltachat.contact.Contact` instance.
|
||||||
"""
|
"""
|
||||||
if not isinstance(addr, (Account, Contact, str)):
|
|
||||||
raise TypeError(str(addr))
|
|
||||||
return self.as_contact(addr, name=name)
|
|
||||||
|
|
||||||
def as_contact(self, obj, name=None):
|
|
||||||
""" Create a contact from an Account, Contact or e-mail address. """
|
|
||||||
if isinstance(obj, Account):
|
if isinstance(obj, Account):
|
||||||
if not obj.is_configured():
|
if not obj.is_configured():
|
||||||
raise ValueError("can only add addresses from configured accounts")
|
raise ValueError("can only add addresses from configured accounts")
|
||||||
@@ -309,7 +306,7 @@ class Account(object):
|
|||||||
|
|
||||||
def create_chat(self, obj):
|
def create_chat(self, obj):
|
||||||
""" Create a 1:1 chat with Account, Contact or e-mail address. """
|
""" Create a 1:1 chat with Account, Contact or e-mail address. """
|
||||||
return self.as_contact(obj).create_chat()
|
return self.create_contact(obj).create_chat()
|
||||||
|
|
||||||
def _create_chat_by_message_id(self, msg_id):
|
def _create_chat_by_message_id(self, msg_id):
|
||||||
return Chat(self, lib.dc_create_chat_by_msg_id(self._dc_context, msg_id))
|
return Chat(self, lib.dc_create_chat_by_msg_id(self._dc_context, msg_id))
|
||||||
|
|||||||
@@ -337,7 +337,7 @@ class Chat(object):
|
|||||||
:raises ValueError: if contact could not be added
|
:raises ValueError: if contact could not be added
|
||||||
:returns: None
|
:returns: None
|
||||||
"""
|
"""
|
||||||
contact = self.account.as_contact(obj)
|
contact = self.account.create_contact(obj)
|
||||||
ret = lib.dc_add_contact_to_chat(self.account._dc_context, self.id, contact.id)
|
ret = lib.dc_add_contact_to_chat(self.account._dc_context, self.id, contact.id)
|
||||||
if ret != 1:
|
if ret != 1:
|
||||||
raise ValueError("could not add contact {!r} to chat".format(contact))
|
raise ValueError("could not add contact {!r} to chat".format(contact))
|
||||||
@@ -350,7 +350,7 @@ class Chat(object):
|
|||||||
:raises ValueError: if contact could not be removed
|
:raises ValueError: if contact could not be removed
|
||||||
:returns: None
|
:returns: None
|
||||||
"""
|
"""
|
||||||
contact = self.account.as_contact(obj)
|
contact = self.account.create_contact(obj)
|
||||||
ret = lib.dc_remove_contact_from_chat(self.account._dc_context, self.id, contact.id)
|
ret = lib.dc_remove_contact_from_chat(self.account._dc_context, self.id, contact.id)
|
||||||
if ret != 1:
|
if ret != 1:
|
||||||
raise ValueError("could not remove contact {!r} from chat".format(contact))
|
raise ValueError("could not remove contact {!r} from chat".format(contact))
|
||||||
|
|||||||
@@ -105,8 +105,8 @@ class TestOfflineAccountBasic:
|
|||||||
class TestOfflineContact:
|
class TestOfflineContact:
|
||||||
def test_contact_attr(self, acfactory):
|
def test_contact_attr(self, acfactory):
|
||||||
ac1 = acfactory.get_configured_offline_account()
|
ac1 = acfactory.get_configured_offline_account()
|
||||||
contact1 = ac1.create_contact(addr="some1@hello.com", name="some1")
|
contact1 = ac1.create_contact("some1@hello.com", name="some1")
|
||||||
contact2 = ac1.create_contact(addr="some1@hello.com", name="some1")
|
contact2 = ac1.create_contact("some1@hello.com", name="some1")
|
||||||
str(contact1)
|
str(contact1)
|
||||||
repr(contact1)
|
repr(contact1)
|
||||||
assert contact1 == contact2
|
assert contact1 == contact2
|
||||||
@@ -118,7 +118,7 @@ class TestOfflineContact:
|
|||||||
|
|
||||||
def test_get_contacts_and_delete(self, acfactory):
|
def test_get_contacts_and_delete(self, acfactory):
|
||||||
ac1 = acfactory.get_configured_offline_account()
|
ac1 = acfactory.get_configured_offline_account()
|
||||||
contact1 = ac1.create_contact(addr="some1@hello.com", name="some1")
|
contact1 = ac1.create_contact("some1@hello.com", name="some1")
|
||||||
contacts = ac1.get_contacts()
|
contacts = ac1.get_contacts()
|
||||||
assert len(contacts) == 1
|
assert len(contacts) == 1
|
||||||
assert contact1 in contacts
|
assert contact1 in contacts
|
||||||
@@ -133,7 +133,7 @@ class TestOfflineContact:
|
|||||||
|
|
||||||
def test_get_contacts_and_delete_fails(self, acfactory):
|
def test_get_contacts_and_delete_fails(self, acfactory):
|
||||||
ac1 = acfactory.get_configured_offline_account()
|
ac1 = acfactory.get_configured_offline_account()
|
||||||
contact1 = ac1.create_contact(addr="some1@example.com", name="some1")
|
contact1 = ac1.create_contact("some1@example.com", name="some1")
|
||||||
msg = contact1.create_chat().send_text("one message")
|
msg = contact1.create_chat().send_text("one message")
|
||||||
assert not ac1.delete_contact(contact1)
|
assert not ac1.delete_contact(contact1)
|
||||||
assert not msg.filemime
|
assert not msg.filemime
|
||||||
@@ -802,7 +802,7 @@ class TestOnlineAccount:
|
|||||||
|
|
||||||
lp.sec("ac1: creating group chat, and forward own message")
|
lp.sec("ac1: creating group chat, and forward own message")
|
||||||
group = ac1.create_group_chat("newgroup2")
|
group = ac1.create_group_chat("newgroup2")
|
||||||
group.add_contact(ac1.create_contact(ac2.get_config("addr")))
|
group.add_contact(ac2)
|
||||||
ac1.forward_messages([msg_out], group)
|
ac1.forward_messages([msg_out], group)
|
||||||
|
|
||||||
# wait for other account to receive
|
# wait for other account to receive
|
||||||
@@ -1485,7 +1485,7 @@ class TestOnlineAccount:
|
|||||||
assert locations[0].accuracy == 0.5
|
assert locations[0].accuracy == 0.5
|
||||||
assert locations[0].timestamp > now
|
assert locations[0].timestamp > now
|
||||||
|
|
||||||
contact = ac2.create_contact(ac1.get_config("addr"))
|
contact = ac2.create_contact(ac1)
|
||||||
locations2 = chat2.get_locations(contact=contact)
|
locations2 = chat2.get_locations(contact=contact)
|
||||||
assert len(locations2) == 1
|
assert len(locations2) == 1
|
||||||
assert locations2 == locations
|
assert locations2 == locations
|
||||||
|
|||||||
@@ -69,7 +69,7 @@ def test_sig():
|
|||||||
def test_markseen_invalid_message_ids(acfactory):
|
def test_markseen_invalid_message_ids(acfactory):
|
||||||
ac1 = acfactory.get_configured_offline_account()
|
ac1 = acfactory.get_configured_offline_account()
|
||||||
|
|
||||||
contact1 = ac1.create_contact(addr="some1@example.com", name="some1")
|
contact1 = ac1.create_contact("some1@example.com", name="some1")
|
||||||
chat = contact1.create_chat()
|
chat = contact1.create_chat()
|
||||||
chat.send_text("one messae")
|
chat.send_text("one messae")
|
||||||
ac1._evtracker.get_matching("DC_EVENT_MSGS_CHANGED")
|
ac1._evtracker.get_matching("DC_EVENT_MSGS_CHANGED")
|
||||||
|
|||||||
Reference in New Issue
Block a user