-
Notifications
You must be signed in to change notification settings - Fork 1
/
buddy_system.py
47 lines (35 loc) · 1.3 KB
/
buddy_system.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import re
from django import template
from apps.buddy_system.models import BuddyRequest
from apps.plugins.middleware.plugin import HttpRequest
register = template.Library()
# I know, it's not the best regex for emails
# [\w.] as [a-zA-Z0-9_.]
CENSORE_REGEX = re.compile(
# emails
r"^$|\S+@\S+\.\S+"
# instagram username
r"|@[\w.]+"
# european phone numbers
r"|\+?\d{1,3}[ \-]?[(]?\d{3,4}[)]?[ \-]?\d{3,4}[ \-]?\d{3,4}",
# URL adresses SIMPLIFIED
# r"(https?://)?([a-z\d_\-]{3,}\.)+[a-z]{2,4}(/\S*)?"
re.VERBOSE | re.IGNORECASE,
)
@register.filter
def censore_description(description: str) -> str:
return CENSORE_REGEX.sub("---censored---", description)
@register.simple_tag(takes_context=True)
def get_current_buddy_request_of_user(context):
request: HttpRequest = context["request"]
# TODO: could be more then one?
return request.membership.user.buddy_system_issued_requests.filter(
responsible_section=request.membership.section,
).first()
@register.simple_tag(takes_context=True)
def get_waiting_buddy_requests_placed_before(context, br: BuddyRequest):
request: HttpRequest = context["request"]
return request.membership.section.buddy_system_requests.filter(
state=BuddyRequest.State.CREATED,
created__lt=br.created,
).count()