Esempio n. 1
0
    def update(self, request, pk=None):
        balance = get_object_or_404(self.queryset, pk=pk)
        data = request.data
        users = [
            User.objects.get(username='******'),
            User.objects.get(username='******'),
            User.objects.get(username='******')
        ]
        inboxes = ['israel', 'lydia', 'aba']

        if int(data['balance']) == 1000:
            tags = {"action": "balance", "actor": 'The'}
            add_message_for(
                users=users,
                level=3,
                message_text='current available balance is {}'.format(
                    data['balance']),
                extra_tags=json.dumps(tags),
                date=datetime.now(),
                url='/office/balance/1/')

            try:
                pusher.trigger(
                    [u'{}_inbox'.format(inbox) for inbox in inboxes],
                    u'update', {
                        'The current available balance is {}'.format(
                            data['balance'])
                    })
            except (socket.gaierror, requests.exceptions.ConnectionError,
                    requests.exceptions.ReadTimeout,
                    requests.exceptions.ConnectTimeout) as e:
                pass

        elif int(data['balance'] < 1000):
            tags = {"action": "balance", "actor": 'The'}
            add_message_for(
                users=users,
                level=3,
                message_text='current available balance is lower than 1000',
                extra_tags=json.dumps(tags),
                date=datetime.now(),
                url='/office/balance/1/')

            try:
                pusher.trigger(
                    [u'{}_inbox'.format(inbox)
                     for inbox in inboxes], u'update',
                    {'The current available balance is lower than 1000'})
            except (socket.gaierror, requests.exceptions.ConnectionError,
                    requests.exceptions.ReadTimeout,
                    requests.exceptions.ConnectTimeout) as e:
                pass

        serializer = self.serializer_class(balance, data=data)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)
        if getattr(balance, '_prefetched_objects_cache', None):
            instance._prefetched_objects_cache = {}

        return Response(serializer.data)
Esempio n. 2
0
    def update(self, request, pk=None):
        job = get_object_or_404(self.queryset, pk=pk)
        data = request.data
        users = ['israel', 'afro', 'lydia', 'andre', 'paul', 'aba']

        if int(data['percentage']) == 100:
            data['is_complete'] = True

            try:
                pusher.trigger(
                    [u'{}_inbox'.format(user) for user in users], u'update', {
                        'message':
                        '{} completed a job for {}'.format(
                            data['handler'].capitalize(),
                            request.data['client_name'].capitalize())
                    })
            except (socket.gaierror, requests.exceptions.ConnectionError,
                    requests.exceptions.ReadTimeout,
                    requests.exceptions.ConnectTimeout) as e:
                pass

            tags = {
                "action": "completed",
                "actor": job.handler.capitalize(),
                "target": job.client_name.capitalize()
            }
            add_message_for(users=User.objects.all(),
                            level=3,
                            message_text="completed a job for",
                            extra_tags=json.dumps(tags),
                            date=datetime.now(),
                            url='/office/jobs/{}/'.format(job.id))
        else:
            data['is_complete'] = False

        serializer = self.serializer_class(job, data=request.data)
        serializer.is_valid(raise_exception=True)
        self.perform_update(serializer)

        if getattr(job, '_prefetched_objects_cache', None):
            instance._prefetched_objects_cache = {}

        return Response(serializer.data)
Esempio n. 3
0
def my_handler(sender,instance,created,**kwargs):
    if created:
        tags = {"action":"created", "actor": instance.user.username.capitalize(), "target": instance.description.capitalize(), }
        users = [User.objects.get(username='******'),User.objects.get(username='******'),User.objects.get(username='******')]
        if users[1] is instance.user:
            add_message_for(users=[users[0],users[2]], level=3, message_text='raised an imprest', extra_tags=json.dumps(tags), date=datetime.now(), url="/office/imprests/{}/".format(instance.id))
        elif users[0] is instance.user:
            add_message_for(users=users[1:], level=3, message_text='raised an imprest', extra_tags=json.dumps(tags), date=datetime.now(), url="/office/imprests/{}/".format(instance.id))     
        else:
            add_message_for(users=users, level=3, message_text='raised an imprest', extra_tags=json.dumps(tags), date=datetime.now(), url="/office/imprests/{}/".format(instance.id))
Esempio n. 4
0
    def update(self, request, pk=None):
        imprest = get_object_or_404(self.queryset, pk=pk)
        old_imprest = imprest
        serializer = self.serializer_class(imprest, data=request.data)
        serializer.is_valid(raise_exception=True)
        users = [
            imprest.user,
            User.objects.get(username='******'),
            User.objects.get(username='******')
        ]
        lydia = users[1]
        data = request.data

        if old_imprest.description == data['description'] and int(
                old_imprest.amount) == int(data['amount']):

            tags = {
                "action": "accepted",
                "actor": request.user.username.capitalize(),
                "target": imprest.description.capitalize()
            }
            if users[1] == imprest.user:

                payload1 = {
                    "head":
                    "{} accepted your imprest".format(
                        request.user.username.capitalize()),
                    "body":
                    "{} {} N{}".format(imprest.description.capitalize(), '\n',
                                       imprest.amount),
                    "tag":
                    "accepted"
                }
                send_notification_to_user(user=imprest.user,
                                          payload=json.dumps(payload1),
                                          ttl=100000)

                try:
                    pusher.trigger(
                        u'lydia_inbox', u'update', {
                            'message':
                            '{} accepted your imprest'.format(
                                request.user.username.capitalize())
                        })
                    pusher.trigger(
                        u'aba_inbox', u'update', {
                            'message':
                            '{} accepted {}\'s imprest'.format(
                                request.user.username.capitalize(),
                                imprest.user.username.capitalize())
                        })
                except (socket.gaierror, requests.exceptions.ConnectionError,
                        requests.exceptions.ReadTimeout,
                        requests.exceptions.ConnectTimeout) as e:
                    pass

                add_message_for(users=[lydia],
                                level=3,
                                message_text=" accepted your imprest",
                                date=datetime.now(),
                                extra_tags=json.dumps(tags),
                                url='/office/imprests/{}/'.format(imprest.id))
                add_message_for(users=[User.objects.get(username="******")],
                                level=3,
                                message_text="accepted {}'s imprest".format(
                                    imprest.user.username.capitalize()),
                                date=datetime.now(),
                                extra_tags=json.dumps(tags),
                                url='/office/imprests/{}/'.format(imprest.id))
            else:

                payload1 = {
                    "head":
                    "{} accepted your imprest".format(
                        request.user.username.capitalize()),
                    "body":
                    "{} {} N{}".format(imprest.description.capitalize(), '\n',
                                       imprest.amount),
                    "tag":
                    "accepted"
                }
                send_notification_to_user(user=users[0],
                                          payload=json.dumps(payload1),
                                          ttl=100000)

                payload = {
                    "head":
                    "{} accepted {}'s imprest".format(
                        request.user.username.capitalize(),
                        imprest.user.username.capitalize()),
                    "body":
                    "{} {} N{}".format(imprest.description.capitalize(), '\n',
                                       imprest.amount),
                    "tag":
                    "accepted"
                }
                send_notification_to_user(user=users[1],
                                          payload=json.dumps(payload),
                                          ttl=100000)
                send_notification_to_user(user=users[2],
                                          payload=json.dumps(payload),
                                          ttl=100000)

                try:
                    pusher.trigger(
                        [u'lydia_inbox', u'aba_inbox'], u'update', {
                            'message':
                            '{} accepted {}\'s imprest'.format(
                                request.user.username.capitalize(),
                                imprest.user.username.capitalize())
                        })
                    pusher.trigger(
                        u'{}_inbox'.format(imprest.user.username), u'update', {
                            'message':
                            '{} accepted your imprest'.format(
                                request.user.username.capitalize())
                        })
                except (socket.gaierror, requests.exceptions.ConnectionError,
                        requests.exceptions.ReadTimeout,
                        requests.exceptions.ConnectTimeout) as e:
                    pass

                add_message_for(users=[users[0]],
                                level=3,
                                message_text="accepted your imprest",
                                date=datetime.now(),
                                extra_tags=json.dumps(tags),
                                url='/office/imprests/{}/'.format(imprest.id))
                add_message_for(
                    users=[lydia, User.objects.get(username="******")],
                    level=3,
                    message_text="accepted {}'s imprest".format(
                        imprest.user.username.capitalize()),
                    date=datetime.now(),
                    extra_tags=json.dumps(tags),
                    url='/office/imprests/{}/'.format(imprest.id))

        else:

            try:
                pusher.trigger(
                    u'{}_inbox'.format(imprest.user.username.capitalize()),
                    u'update', {
                        'message':
                        '{} edited your imprest - {}'.format(
                            request.user.username.capitalize(),
                            data['description'])
                    })
            except (socket.gaierror, requests.exceptions.ConnectionError,
                    requests.exceptions.ReadTimeout,
                    requests.exceptions.ConnectTimeout) as e:
                pass

            tags = {
                "action": "edited",
                "actor": request.user.username.capitalize(),
                "target": imprest.description.capitalize()
            }
            add_message_for(users=[users[0]],
                            level=3,
                            message_text="edited your imprest",
                            date=datetime.now(),
                            extra_tags=json.dumps(tags),
                            url='/office/imprests/{}/'.format(imprest.id))

        self.perform_update(serializer)

        if getattr(imprest, '_prefetched_objects_cache', None):
            instance._prefetched_objects_cache = {}

        return Response(serializer.data)
Esempio n. 5
0
    def update(self, request, pk=None):

        vendor = get_object_or_404(self.queryset, pk=pk)
        serializer = self.serializer_class(vendor, data=request.data)
        serializer.is_valid(raise_exception=True)
        users = [
            User.objects.get(username='******'),
            User.objects.get(username='******')
        ]
        self.perform_update(serializer)

        if request.data['is_approved'] != vendor.is_approved:

            if vendor.user == users[0]:

                payload = {
                    "head":
                    "{} accepted a vendor remittance form for {}".format(
                        request.user.username.capitalize(),
                        request.data['vendor_name']),
                    "body":
                    "{}".format(request.data['job_description']),
                    "tag":
                    "created"
                }
                send_notification_to_user(user=users[1],
                                          payload=json.dumps(payload),
                                          ttl=100000)

                try:
                    pusher.trigger(
                        u'aba_inbox', u'update', {
                            'message':
                            '{} approved a vendor remittance form for - {}'.
                            format(request.user.username.capitalize(),
                                   vendor.vendor_name.capitalize())
                        })
                    pusher.trigger(
                        u'{}_inbox'.format(vendor.user.username.capitalize()),
                        u'update', {
                            'message':
                            '{} appproved your vendor remittance form for - {}'
                            .format(request.user.username.capitalize(),
                                    vendor.vendor_name.capitalize())
                        })
                except (socket.gaierror, requests.exceptions.ConnectionError,
                        requests.exceptions.ReadTimeout,
                        requests.exceptions.ConnectTimeout) as e:
                    pass

                tags = {
                    "action": "accepted",
                    "actor": request.user.username,
                    "target": vendor.vendor_name
                }

                add_message_for(
                    users=[users[1]],
                    level=3,
                    message_text="approved a vendor remittance form for",
                    extra_tags=json.dumps(tags),
                    date=datetime.now(),
                    url='/office/vendors/{}/'.format(vendor.id))
                add_message_for(
                    users=[users[0]],
                    level=3,
                    message_text="approved your vendor remittance form for",
                    extra_tags=json.dumps(tags),
                    date=datetime.now(),
                    url='/office/vendors/{}/'.format(vendor.id))

            else:

                payload = {
                    "head":
                    "{} accepted a vendor remittance form for {}".format(
                        request.user.username.capitalize(),
                        request.data['vendor_name']),
                    "body":
                    "{}".format(request.data['job_description']),
                    "tag":
                    "created"
                }
                send_notification_to_user(user=users[1],
                                          payload=json.dumps(payload),
                                          ttl=100000)

                try:
                    pusher.trigger(
                        u'aba_inbox', u'update', {
                            'message':
                            '{} approved vendor remittance form for - {}'.
                            format(request.user.username.capitalize(),
                                   vendor.vendor_name.capitalize())
                        })
                except (socket.gaierror, requests.exceptions.ConnectionError,
                        requests.exceptions.ReadTimeout,
                        requests.exceptions.ConnectTimeout) as e:
                    pass

                tags = {
                    "action": "accepted",
                    "actor": request.user.username.capitalize(),
                    "target": vendor.vendor_name
                }
                add_message_for(
                    users=[users[1]],
                    level=3,
                    message_text="approved a vendor remittance form for",
                    extra_tags=json.dumps(tags),
                    date=datetime.now(),
                    url='/office/vendors/{}/'.format(vendor.id))

        if getattr(vendor, '_prefetched_objects_cache', None):
            instance._prefetched_objects_cache = {}

        return Response(serializer.data)
Esempio n. 6
0
def new_job(sender, instance, created, **kwargs):
    tags = {"action":"started","actor": instance.handler.capitalize(), "target": instance.client_name.capitalize()}

    if created:
        add_message_for(users=User.objects.all(),level=3,message_text="started a job for", extra_tags=json.dumps(tags),date=datetime.now(),url='/office/jobs/{}/'.format(instance.id) )
Esempio n. 7
0
def notify_vendor(sender, instance, created, **kwargs):
    tags = {"action":"created","actor": instance.user.username.capitalize(), "target": instance.vendor_name.capitalize()}
    if created:
        users = [User.objects.get(username='******'),User.objects.get(username='******')]
        add_message_for(users=users,level=3,message_text='created a vendor remittance form for', extra_tags=json.dumps(tags),date=datetime.now(), url="/office/vendors/{}/".format(instance.id))