1 from pithos.api.settings import (BACKEND_DB_MODULE, BACKEND_DB_CONNECTION,
2 BACKEND_BLOCK_MODULE, BACKEND_BLOCK_PATH,
4 BACKEND_QUEUE_MODULE, BACKEND_QUEUE_CONNECTION,
5 BACKEND_QUOTA, BACKEND_VERSIONING)
6 from pithos.backends import connect_backend
7 from pithos.api.util import hashmap_md5
9 from django.core.mail import send_mail
10 from django.utils.translation import ugettext as _
12 from astakos.im.settings import DEFAULT_FROM_EMAIL
15 from smtplib import SMTPException
18 if m['resource'] != 'object' or m['details']['action'] != 'object update':
21 backend = connect_backend(db_module=BACKEND_DB_MODULE,
22 db_connection=BACKEND_DB_CONNECTION,
23 block_module=BACKEND_BLOCK_MODULE,
24 block_path=BACKEND_BLOCK_PATH,
25 block_umask=BACKEND_BLOCK_UMASK,
26 queue_module=BACKEND_QUEUE_MODULE,
27 queue_connection=BACKEND_QUEUE_CONNECTION)
28 backend.default_policy['quota'] = BACKEND_QUOTA
29 backend.default_policy['versioning'] = BACKEND_VERSIONING
32 account, container, name = path.split('/', 2)
33 version = m['details']['version']
36 meta = backend.get_object_meta(account, account, container, name, 'pithos', version)
37 if meta['checksum'] == '':
38 size, hashmap = backend.get_object_hashmap(account, account, container, name, version)
39 checksum = hashmap_md5(backend, hashmap, size)
40 backend.update_object_checksum(account, account, container, name, version, checksum)
41 print 'INFO: Updated checksum for path "%s"' % (path,)
43 print 'WARNING: Can not update checksum for path "%s" (%s)' % (path, e)
47 def send_sharing_notification(m):
48 if m['resource'] != 'sharing':
51 members = m['details']['members']
52 user = m['details']['user']
54 account, container, name = path.split('/', 2)
56 subject = 'Invitation to a Pithos+ shared object'
57 from_email = DEFAULT_FROM_EMAIL
58 recipient_list = members
59 message = 'User %s has invited you to a Pithos+ shared object. You can view it under "Shared to me" at "%s".' %(user, path)
61 send_mail(subject, message, from_email, recipient_list)
62 print 'INFO: Sharing notification sent for path "%s" to %s' % (path, ','.join(recipient_list))
63 except (SMTPException, socket.error) as e:
64 print 'WARNING: Can not update send email for sharing "%s" (%s)' % (path, e)