Statistics
| Branch: | Tag: | Revision:

root / snf-pithos-app / pithos / api / dispatch.py @ 1f3f907f

History | View | Annotate | Download (2.1 kB)

1 b1dadd0e Sofia Papagiannaki
from pithos.api.settings import (BACKEND_QUOTA, BACKEND_VERSIONING)
2 b1dadd0e Sofia Papagiannaki
3 b1dadd0e Sofia Papagiannaki
#from pithos.backends import connect_backend
4 b1dadd0e Sofia Papagiannaki
from pithos.api.util import hashmap_md5, get_backend
5 b3155065 Antony Chazapis
6 a74ba506 Sofia Papagiannaki
from django.core.mail import send_mail
7 a74ba506 Sofia Papagiannaki
from django.utils.translation import ugettext as _
8 a74ba506 Sofia Papagiannaki
9 a74ba506 Sofia Papagiannaki
from astakos.im.settings import DEFAULT_FROM_EMAIL
10 a74ba506 Sofia Papagiannaki
11 75cf66bf Sofia Papagiannaki
import socket
12 75cf66bf Sofia Papagiannaki
from smtplib import SMTPException
13 75cf66bf Sofia Papagiannaki
14 d50ed8d4 Sofia Papagiannaki
15 b3155065 Antony Chazapis
def update_md5(m):
16 b3155065 Antony Chazapis
    if m['resource'] != 'object' or m['details']['action'] != 'object update':
17 b3155065 Antony Chazapis
        return
18 d50ed8d4 Sofia Papagiannaki
19 b1dadd0e Sofia Papagiannaki
    backend = get_backend()
20 b3155065 Antony Chazapis
    backend.default_policy['quota'] = BACKEND_QUOTA
21 b3155065 Antony Chazapis
    backend.default_policy['versioning'] = BACKEND_VERSIONING
22 d50ed8d4 Sofia Papagiannaki
23 b3155065 Antony Chazapis
    path = m['value']
24 b3155065 Antony Chazapis
    account, container, name = path.split('/', 2)
25 b3155065 Antony Chazapis
    version = m['details']['version']
26 b3155065 Antony Chazapis
    meta = None
27 b3155065 Antony Chazapis
    try:
28 d50ed8d4 Sofia Papagiannaki
        meta = backend.get_object_meta(
29 d50ed8d4 Sofia Papagiannaki
            account, account, container, name, 'pithos', version)
30 b3155065 Antony Chazapis
        if meta['checksum'] == '':
31 d50ed8d4 Sofia Papagiannaki
            size, hashmap = backend.get_object_hashmap(
32 d50ed8d4 Sofia Papagiannaki
                account, account, container, name, version)
33 b3155065 Antony Chazapis
            checksum = hashmap_md5(backend, hashmap, size)
34 d50ed8d4 Sofia Papagiannaki
            backend.update_object_checksum(
35 d50ed8d4 Sofia Papagiannaki
                account, account, container, name, version, checksum)
36 b3155065 Antony Chazapis
            print 'INFO: Updated checksum for path "%s"' % (path,)
37 b3155065 Antony Chazapis
    except Exception, e:
38 b3155065 Antony Chazapis
        print 'WARNING: Can not update checksum for path "%s" (%s)' % (path, e)
39 d50ed8d4 Sofia Papagiannaki
40 b3155065 Antony Chazapis
    backend.close()
41 a74ba506 Sofia Papagiannaki
42 d50ed8d4 Sofia Papagiannaki
43 a74ba506 Sofia Papagiannaki
def send_sharing_notification(m):
44 a74ba506 Sofia Papagiannaki
    if m['resource'] != 'sharing':
45 a74ba506 Sofia Papagiannaki
        return
46 d50ed8d4 Sofia Papagiannaki
47 a74ba506 Sofia Papagiannaki
    members = m['details']['members']
48 a74ba506 Sofia Papagiannaki
    user = m['details']['user']
49 a74ba506 Sofia Papagiannaki
    path = m['value']
50 a74ba506 Sofia Papagiannaki
    account, container, name = path.split('/', 2)
51 d50ed8d4 Sofia Papagiannaki
52 a74ba506 Sofia Papagiannaki
    subject = 'Invitation to a Pithos+ shared object'
53 a74ba506 Sofia Papagiannaki
    from_email = DEFAULT_FROM_EMAIL
54 a74ba506 Sofia Papagiannaki
    recipient_list = members
55 d50ed8d4 Sofia Papagiannaki
    message = 'User %s has invited you to a Pithos+ shared object. You can view it under "Shared to me" at "%s".' % (user, path)
56 a74ba506 Sofia Papagiannaki
    try:
57 a74ba506 Sofia Papagiannaki
        send_mail(subject, message, from_email, recipient_list)
58 d50ed8d4 Sofia Papagiannaki
        print 'INFO: Sharing notification sent for path "%s" to %s' % (
59 d50ed8d4 Sofia Papagiannaki
            path, ','.join(recipient_list))
60 a74ba506 Sofia Papagiannaki
    except (SMTPException, socket.error) as e:
61 d50ed8d4 Sofia Papagiannaki
        print 'WARNING: Can not update send email for sharing "%s" (%s)' % (
62 d50ed8d4 Sofia Papagiannaki
            path, e)