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