gremmie@1
|
1 """This file houses various core utility functions for GPP"""
|
bgneal@176
|
2 import datetime
|
bgneal@227
|
3 import re
|
bgneal@316
|
4 import logging
|
gremmie@1
|
5
|
gremmie@1
|
6 import django.core.mail
|
gremmie@1
|
7 from django.contrib.sites.models import Site
|
gremmie@1
|
8 from django.conf import settings
|
gremmie@1
|
9
|
bgneal@181
|
10 import mailer
|
bgneal@181
|
11
|
gremmie@1
|
12
|
bgneal@252
|
13 def send_mail(subject, message, from_email, recipient_list,
|
bgneal@252
|
14 fail_silently=False, auth_user=None, auth_password=None,
|
bgneal@252
|
15 expedite=False):
|
gremmie@1
|
16 """The main gpp send email function.
|
gremmie@1
|
17 Use this function to send email from the site. It will obey debug settings and
|
bgneal@252
|
18 log all emails. The expedite flag, when True, will bypass the mail queue.
|
gremmie@1
|
19 """
|
gremmie@1
|
20
|
bgneal@252
|
21 if settings.MAILER_ENQUEUE_MAIL and not expedite:
|
bgneal@180
|
22 mailer.enqueue_mail(subject, message, from_email, recipient_list)
|
bgneal@180
|
23 elif settings.GPP_SEND_EMAIL:
|
gremmie@1
|
24 django.core.mail.send_mail(subject, message, from_email, recipient_list,
|
gremmie@1
|
25 fail_silently, auth_user, auth_password)
|
gremmie@1
|
26
|
bgneal@316
|
27 logging.debug('EMAIL:\nFrom: %s\nTo: %s\nSubject: %s\nMessage:\n%s',
|
bgneal@316
|
28 from_email, str(recipient_list), subject, message)
|
gremmie@1
|
29
|
gremmie@1
|
30
|
gremmie@1
|
31 def email_admins(subject, message):
|
gremmie@1
|
32 """Emails the site admins. Goes through the site send_mail function."""
|
gremmie@1
|
33 site = Site.objects.get_current()
|
gremmie@1
|
34 subject = '[%s] %s' % (site.name, subject)
|
bgneal@316
|
35 send_mail(subject,
|
bgneal@316
|
36 message,
|
gremmie@1
|
37 '%s@%s' % (settings.GPP_NO_REPLY_EMAIL, site.domain),
|
gremmie@1
|
38 [mail_tuple[1] for mail_tuple in settings.ADMINS])
|
gremmie@1
|
39
|
gremmie@1
|
40
|
gremmie@1
|
41 def email_managers(subject, message):
|
gremmie@1
|
42 """Emails the site managers. Goes through the site send_mail function."""
|
gremmie@1
|
43 site = Site.objects.get_current()
|
gremmie@1
|
44 subject = '[%s] %s' % (site.name, subject)
|
bgneal@316
|
45 send_mail(subject,
|
bgneal@316
|
46 msg,
|
gremmie@1
|
47 '%s@%s' % (settings.GPP_NO_REPLY_EMAIL, site.domain),
|
gremmie@1
|
48 [mail_tuple[1] for mail_tuple in settings.MANAGERS])
|
gremmie@1
|
49
|
gremmie@1
|
50
|
gremmie@1
|
51 def get_full_name(user):
|
gremmie@1
|
52 """Returns the user's full name if available, otherwise falls back
|
gremmie@1
|
53 to the username."""
|
gremmie@1
|
54 full_name = user.get_full_name()
|
gremmie@1
|
55 if full_name:
|
gremmie@1
|
56 return full_name
|
gremmie@1
|
57 return user.username
|
bgneal@9
|
58
|
bgneal@176
|
59
|
bgneal@176
|
60 BASE_YEAR = 2010
|
bgneal@176
|
61
|
bgneal@176
|
62 def copyright_str():
|
bgneal@176
|
63 curr_year = datetime.datetime.now().year
|
bgneal@176
|
64 if curr_year == BASE_YEAR:
|
bgneal@176
|
65 year_range = str(BASE_YEAR)
|
bgneal@176
|
66 else:
|
bgneal@176
|
67 year_range = "%d - %d" % (BASE_YEAR, curr_year)
|
bgneal@176
|
68
|
bgneal@176
|
69 return 'Copyright (C) %s, SurfGuitar101.com' % year_range
|
bgneal@227
|
70
|
bgneal@227
|
71
|
bgneal@227
|
72 IP_PAT = re.compile('(\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3})')
|
bgneal@227
|
73
|
bgneal@227
|
74 def get_ip(request):
|
bgneal@227
|
75 """Returns the IP from the request or None if it cannot be retrieved."""
|
bgneal@227
|
76 ip = request.META.get('HTTP_X_FORWARDED_FOR',
|
bgneal@227
|
77 request.META.get('REMOTE_ADDR'))
|
bgneal@227
|
78
|
bgneal@227
|
79 if ip:
|
bgneal@227
|
80 match = IP_PAT.match(ip)
|
bgneal@227
|
81 ip = match.group(1) if match else None
|
bgneal@227
|
82
|
bgneal@227
|
83 return ip
|
bgneal@241
|
84
|
bgneal@241
|
85
|
bgneal@241
|
86 def get_page(qdict):
|
bgneal@241
|
87 """Attempts to retrieve the value for "page" from the given query dict and
|
bgneal@241
|
88 return it as an integer. If the key cannot be found or converted to an
|
bgneal@241
|
89 integer, 1 is returned.
|
bgneal@241
|
90 """
|
bgneal@241
|
91 n = qdict.get('page', 1)
|
bgneal@241
|
92 try:
|
bgneal@241
|
93 n = int(n)
|
bgneal@241
|
94 except ValueError:
|
bgneal@241
|
95 n = 1
|
bgneal@241
|
96 return n
|