slidge 0.2.1__py3-none-any.whl → 0.2.2__py3-none-any.whl

Sign up to get free protection for your applications and to get access to all the features.
slidge/__version__.py CHANGED
@@ -2,4 +2,4 @@ from slidge.util.util import get_version # noqa: F401
2
2
 
3
3
  # this is modified before publish, but if someone cloned from the repo,
4
4
  # it can help
5
- __version__ = "0.2.1"
5
+ __version__ = "0.2.2"
slidge/command/base.py CHANGED
@@ -245,7 +245,7 @@ class FormField:
245
245
  self.type = "text-private"
246
246
 
247
247
  def __acceptable_options(self) -> list[str]:
248
- if not self.options:
248
+ if self.options is None:
249
249
  raise RuntimeError
250
250
  return [x["value"] for x in self.options]
251
251
 
@@ -175,7 +175,9 @@ class ChatCommandProvider:
175
175
  else:
176
176
  if f.type == "list-multi":
177
177
  msg.reply(
178
- "Multiple selection allowed, use a single space as a separator"
178
+ "Multiple selection allowed, use new lines as a separator, ie, "
179
+ "one selected item per line. To select no item, reply with a space "
180
+ "(the punctuation)."
179
181
  ).send()
180
182
  if f.options:
181
183
  for o in f.options:
@@ -202,7 +204,8 @@ class ChatCommandProvider:
202
204
  ans = "false"
203
205
 
204
206
  if f.type.endswith("multi"):
205
- form_values[f.var] = f.validate(ans.split(" "))
207
+ choices = [] if ans == " " else ans.split("\n")
208
+ form_values[f.var] = f.validate(choices)
206
209
  else:
207
210
  form_values[f.var] = f.validate(ans)
208
211
  result = await self.__wrap_handler(
@@ -98,7 +98,7 @@ class Register(Command):
98
98
  raise
99
99
 
100
100
  user = GatewayUser(
101
- jid=ifrom.bare,
101
+ jid=JID(ifrom.bare),
102
102
  legacy_module_data=form_values if data is None else data,
103
103
  )
104
104
 
slidge/command/user.py CHANGED
@@ -292,7 +292,7 @@ class Unregister(Command):
292
292
  user = self.xmpp.store.users.get(session.user_jid)
293
293
  assert user is not None
294
294
  await self.xmpp.unregister_user(user)
295
- return "OK"
295
+ return "You are not registered anymore. Bye!"
296
296
 
297
297
 
298
298
  class LeaveGroup(Command):
slidge/core/gateway.py CHANGED
@@ -797,6 +797,9 @@ class BaseGateway(
797
797
  fut.set_exception(exception)
798
798
 
799
799
  async def unregister_user(self, user: GatewayUser):
800
+ self.send_presence(
801
+ pshow="busy", pstatus="You are not registered to this gateway anymore."
802
+ )
800
803
  await self.xmpp.plugin["xep_0077"].api["user_remove"](None, None, user.jid)
801
804
  await self.xmpp.session_cls.kill_by_jid(user.jid)
802
805
 
@@ -374,9 +374,20 @@ class AttachmentMixin(TextMessageMixin):
374
374
  if xmpp_id == original_xmpp_id:
375
375
  continue
376
376
  self.retract(xmpp_id, thread)
377
+
378
+ if reply_to is not None and reply_to.body:
379
+ # We cannot have a "quote fallback" for attachments since most (all?)
380
+ # XMPP clients will only treat a message as an attachment if the
381
+ # body is the URL and nothing else.
382
+ reply_to_for_attachment: MessageReference | None = MessageReference(
383
+ reply_to.legacy_id, reply_to.author
384
+ )
385
+ else:
386
+ reply_to_for_attachment = reply_to
387
+
377
388
  msg = self._make_message(
378
389
  when=when,
379
- reply_to=reply_to,
390
+ reply_to=reply_to_for_attachment,
380
391
  carbon=carbon,
381
392
  mto=mto,
382
393
  thread=thread,
slidge/db/models.py CHANGED
@@ -242,6 +242,10 @@ class Room(Base):
242
242
 
243
243
  avatar_legacy_id: Mapped[Optional[str]] = mapped_column(nullable=True)
244
244
 
245
+ archive: Mapped[list["ArchivedMessage"]] = relationship(
246
+ cascade="all, delete-orphan"
247
+ )
248
+
245
249
 
246
250
  class ArchivedMessage(Base):
247
251
  """
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.1
2
2
  Name: slidge
3
- Version: 0.2.1
3
+ Version: 0.2.2
4
4
  Summary: XMPP bridging framework
5
5
  Home-page: https://sr.ht/~nicoco/slidge/
6
6
  License: AGPL-3.0-or-later
@@ -1,14 +1,14 @@
1
1
  slidge/__init__.py,sha256=S0tUjqpZlzsr8G4Y_1Xt-KCYB07qaknTB0OwHU8k29U,1587
2
2
  slidge/__main__.py,sha256=ydjUklOoavS4YlGfjRX_8BQN2DaSbaXPMi47RkOgcFI,37
3
- slidge/__version__.py,sha256=zAb2K_MUCe73QeN4OoSMAmTknNgrQq0UQgxIGSVGFk4,164
3
+ slidge/__version__.py,sha256=7B4XHb2FWMm2Pq-Bo548FLUn87ezWnj1aoWxA4jTkZs,164
4
4
  slidge/command/__init__.py,sha256=UYf1mjCYbZ5G7PIgaFTWSQRAzEJkQ6dTH8Fu_e_XnO0,613
5
5
  slidge/command/adhoc.py,sha256=-AO4h1N6owSuuqZon5tDL29O6qmEeAd1pcPjGCkzKRs,10065
6
6
  slidge/command/admin.py,sha256=TYrzgCIhjcTIwl1IUaFlUd3D98SPyao10gB20zo8b3Q,6187
7
- slidge/command/base.py,sha256=S_bKUJB0fnKs58PvjgFf15_6cw-8k2bMeSECTmFxQGQ,13155
7
+ slidge/command/base.py,sha256=S-4WnxDuGE3sQTca5L6DjHVBsHqpNuf6zvXffYoP46c,13159
8
8
  slidge/command/categories.py,sha256=vF0KGDV9sEn8TNkcMoDRw-u3gEyNHSXghOU2JRHQtKs,351
9
- slidge/command/chat_command.py,sha256=8_1mqXNLlcwzozbNhZAAYwxavG09rNR_o9G3TwY-lO8,10941
10
- slidge/command/register.py,sha256=6v-yerYcrME1XahDP-wUgipQDFXV_HVQlYCrKxLDqAA,6751
11
- slidge/command/user.py,sha256=0pt9k41npv7MRI_0vauuR1JPb7Gf7UE2lOQeL2XNd7U,12065
9
+ slidge/command/chat_command.py,sha256=z-4qp03rK7kCh3_kEozDViwkDg_hVjHvRCiYYJxedBQ,11153
10
+ slidge/command/register.py,sha256=Zlh5PufPE8EeHLNrFgn3adSPsq-erMpW8uOVYRqFOy8,6756
11
+ slidge/command/user.py,sha256=aksfkRUK7xj9n0XM-IfUSS5LrTp0qIHt5K2UkBBT1UE,12099
12
12
  slidge/contact/__init__.py,sha256=WMMaHk7UW7YT9EH2LtPdkU0bHQaOp4ikBhbBQskmoc8,191
13
13
  slidge/contact/contact.py,sha256=fFWnjgf6HKi782htDyDNS_YVx_baHT24oqjBIruuRRQ,23109
14
14
  slidge/contact/roster.py,sha256=x3speGdHbZ-VTLoQLQW4s53rBeBvW87W8ZibCCZSLDA,10300
@@ -33,9 +33,9 @@ slidge/core/dispatcher/search.py,sha256=9cGj0wwvyYlP_Yk440Y12sgo4Y1p-JWUDSJP5Zxc
33
33
  slidge/core/dispatcher/session_dispatcher.py,sha256=vNaOJpHKGTzIyQJX457IvhbooKFN5JR3HA7XW0AArFI,2868
34
34
  slidge/core/dispatcher/util.py,sha256=YtXyVxM3orE7aYWs-GbJumtLTI63OpaQY_t4FMTjoZo,5754
35
35
  slidge/core/dispatcher/vcard.py,sha256=Rmx-wCz6Lps0mXCO48HppNQlS3GOgMuzuw9hZYBdlVU,5130
36
- slidge/core/gateway.py,sha256=dVmJw8vv1RhjOSMofBGCW5K5ZnN7QWBbc1bzv6qsuJ8,36390
36
+ slidge/core/gateway.py,sha256=m7XN4ACd_txLl4zoAJNJjKT0BFJu6yUfJmhVfUkV7XM,36512
37
37
  slidge/core/mixins/__init__.py,sha256=muReAzgvENgMvlfm0Fpe6BQFfm2EMjoDe9ZhGgo6Vig,627
38
- slidge/core/mixins/attachment.py,sha256=MkpnCtz3wLwU6MEqVLJ5p3QiGrCdWEFp5e7AVmYzhjo,19645
38
+ slidge/core/mixins/attachment.py,sha256=LLZ_BFJfYIFtmzX4N2rhBARppyHz5AMLGkspMixkxmg,20128
39
39
  slidge/core/mixins/avatar.py,sha256=kGIIZzLSNuxF9bIvt5Bv03_uT_pU5QV1kS7cRu6-GUA,7874
40
40
  slidge/core/mixins/base.py,sha256=MOd-pas38_52VawQVlxWtBtmTKC6My9G0ZaCeQxOJbs,748
41
41
  slidge/core/mixins/db.py,sha256=5Qpegd7D8e5TLXLLINYcf_DuVdN-7wNmsfztUuFYPcU,442
@@ -72,7 +72,7 @@ slidge/db/alembic/versions/c4a8ec35a0e8_per_room_user_nick.py,sha256=jjQmlRv6nqd
72
72
  slidge/db/alembic/versions/e91195719c2c_store_users_avatars_persistently.py,sha256=8Ga3VFgKrzMs_-B8OPtfP-0rey_MFaDg-QGtSbaft3o,640
73
73
  slidge/db/avatar.py,sha256=FfRt2Vu11ZKD9F3x1_drawvUd-TDE3mp7SE3BZ9hOOg,6467
74
74
  slidge/db/meta.py,sha256=v1Jf-npZ28QwdGpsLQWLBHEbEP3-jnPrygRg05tJ_Iw,1831
75
- slidge/db/models.py,sha256=HL9pv0y2YQzdn4bkewhJmWEctOPleJ4pu8EyUzm3Fzc,13859
75
+ slidge/db/models.py,sha256=0NUJfa3lPKHhwV2zE4p7QVYCVs3yn9egFg2u9mssk5c,13964
76
76
  slidge/db/store.py,sha256=KDQ0rp7h6FHgONTYBvucytE7n6Fhsgxgo0pgX18dsTA,46696
77
77
  slidge/group/__init__.py,sha256=yFt7cHqeaKIMN6f9ZyhhspOcJJvBtLedGv-iICG7lto,258
78
78
  slidge/group/archive.py,sha256=xGPkdSk8-BT6t6lNVo1FEwiFVAttoxCma8Tsyk5r8Kg,5279
@@ -124,8 +124,8 @@ slidge/util/db.py,sha256=4LxZj8oBYgiSnyBUnF_ALjr0TblkfNQq_p28sCfkHMY,242
124
124
  slidge/util/test.py,sha256=xnGXK0wvua49ncQm4linIfH24Ux6oCkm5A71k2V80zI,14007
125
125
  slidge/util/types.py,sha256=R_xfS5mRL0XUJIoDpnaAkZlTOoLPerduXBFftaVwIAI,5489
126
126
  slidge/util/util.py,sha256=An4BRIHktZGXnu4kCwaKYaSye_PlyuxEm_4SC9YvPhc,9594
127
- slidge-0.2.1.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
128
- slidge-0.2.1.dist-info/METADATA,sha256=JVLGbnKy6awjd8vjQk9-8OtvuusZDSm6tpzKzrcU3xg,5003
129
- slidge-0.2.1.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
130
- slidge-0.2.1.dist-info/entry_points.txt,sha256=btz6mbzx1X6fjFWAS_Bo5qNi8PtxUsDgunt-6r4JDHw,43
131
- slidge-0.2.1.dist-info/RECORD,,
127
+ slidge-0.2.2.dist-info/LICENSE,sha256=DZak_2itbUtvHzD3E7GNUYSRK6jdOJ-GqncQ2weavLA,34523
128
+ slidge-0.2.2.dist-info/METADATA,sha256=RtbebnKhLTIHGQxNMCKlDIL0xGE37uiDZoAswMjRA6k,5003
129
+ slidge-0.2.2.dist-info/WHEEL,sha256=7Z8_27uaHI_UZAc4Uox4PpBhQ9Y5_modZXWMxtUi4NU,88
130
+ slidge-0.2.2.dist-info/entry_points.txt,sha256=btz6mbzx1X6fjFWAS_Bo5qNi8PtxUsDgunt-6r4JDHw,43
131
+ slidge-0.2.2.dist-info/RECORD,,
File without changes