Exemple #1
0
    def get_redirect_url(self, pk):
        """
        Checks if the current user has permission to accept the quest.
        Accepts the quest and informs the owner if successful.
        Returns the redirect URL as a string.
        """
        quest = Quest.objects.get(pk=pk)

        # check permission
        if self.request.user != quest.relation.quester or quest.status != 'C':
            return reverse('quests:list')

        # update quest
        quest.activate()
        quest.save()

        # inform owner
        pm_write(
            sender=self.request.user,
            recipient=quest.relation.owner,
            subject="Quest %s has been accepted." % quest.title,
            body=""
            )

        messages.add_message(self.request, messages.SUCCESS, 'Quest has been accepted.')
        return reverse('quests:list')
Exemple #2
0
def branch_ban(request, branch_id, user_id):
    """ Ban an user form the branch id """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    if can_manage(user, request.user):
        try:
            to_remove = BranchMembers.objects.get(branch=branch_id, user=user_id)
            to_remove.delete()
            branch.banned.add(to_remove.user)
        except:
            pass

        subject = _('Bannissement de la branche {branch}').format(branch=branch.name)
        body = _('Vous avez été banni de la branche {branch}. Vous ne pouvez à présent plus rejoindre cette branche. Pour plus d\'informations, contactez un adminstrateur ou l\'officier en charge de la branche en question').format(branch=branch.name)
        pm_write(request.user, user, subject, body)
        messages.add_message(request, messages.INFO, _('{user} a été banni de la branche {branch}').format(branch=branch, user=user))

        Offer.objects.filter(branch=branch, donor=user).delete()
        Demand.objects.filter(branch=branch, receiver=user, success=None, closed=False).delete()

    else :
        return refuse(request)

    return redirect(branch.get_absolute_url())
Exemple #3
0
    def obj_delete(self, bundle, **kwargs):
        r = redis.StrictRedis(host='localhost', port=6379, db=0)
        event = Event.objects.get(pk=int(kwargs['pk']))
        members = event.membership_set.filter(rsvp__in=['yes', 'maybe'],
                                              is_organizer=False)
        organizer = event.membership_set.filter(is_organizer=True)[0]
        recipients = FacebookCustomUserActive.objects. \
            filter(id__in=members.values_list('user_id', flat=True))
        data = {u'event_name': unicode(event.name),
                u'event_start_date': unicode(event.starts_on),
                u'event_organizer_name': unicode(organizer.user.first_name)}

        for recipient in recipients:
            message_data = {u'sent_at': now().isoformat(),
                            u'sender': '/api/auth/user/{}/'.format(
                                organizer.user.id),
                            u'recipient': '/api/auth/user/{}/'.format(
                                recipient.id),
                            u'body': u"""
                                    The event {event_name} on {event_start_date} has been
                                    cancelled by {event_organizer_name},
                                    the event host. We apologize for any inconvenience.
                                    (This is an automated message.)"
                                    """.format(**data)}
            pm_write(bundle.request.user, recipient, '',
                     body=message_data['body'])
            r.publish('message.%s' % recipient.id, json.dumps(message_data))

        for member in members:
            r.publish('event_deleted.%s' % member.user.id, json.dumps(data))

        return super(EventResource, self).obj_delete(bundle, **kwargs)
Exemple #4
0
def openshift(request, systempass):
	workday = Workday.objects.filter(system__slug__iexact=systempass, openmarket=True, start__gte=datetime.datetime.now())


	if request.method =='POST':
		if 'grab' in request.POST:
			workdayid = request.POST['id']
			workdaydata = Workday.objects.get(id=workdayid)
			form = OpenShiftForm(request.POST,instance=workdaydata)
			if form.is_valid():
				instance = form.save(commit=False)
				instance.name = request.user
				instance.accepted = True
				instance.openmarket = False
				instance.save()

				pm_write(
		            sender=instance.name,
		            recipient=instance.manager,
		            subject='Shift Grabbed for %s!' % instance.start,
		            body='The shift was grabbed by %s %s.  Phone: %s ' %(request.user.first_name, request.user.last_name, request.user.mobile)
		            )

	else:
		form = OpenShiftForm()
	context = {'workday':workday, 'form':form}
	return render(request, 'main/openshift.html', context)
Exemple #5
0
    def get_redirect_url(self, pk):
        """
        Checks if the current user has permission to accept the quest.
        Accepts the quest and informs the owner if successful.
        Returns the redirect URL as a string.
        """
        quest = Quest.objects.get(pk=pk)

        # check permission
        if self.request.user != quest.relation.quester or quest.status != 'C':
            return reverse('quests:list')

        # update quest
        quest.activate()
        quest.save()

        # inform owner
        pm_write(sender=self.request.user,
                 recipient=quest.relation.owner,
                 subject="Quest %s has been accepted." % quest.title,
                 body="")

        messages.add_message(self.request, messages.SUCCESS,
                             'Quest has been accepted.')
        return reverse('quests:list')
Exemple #6
0
    def get_redirect_url(self, pk):
        """
        Checks if the current user has permission to deny the quest completion.
        Denies the quest completion and informs the quester if successful.
        Returns the redirect URL as a string.
        """
        quest = Quest.objects.get(pk=pk)

        # check permission
        if self.request.user != quest.relation.owner or quest.status != 'M':
            return reverse('quests:list')

        # update quest
        quest.status = 'A'
        quest.save()

        # inform quester
        messages.add_message(self.request, messages.INFO, 'Quest completion has been denied.')
        pm_write(
            sender=self.request.user,
            recipient=quest.relation.quester,
            subject="Quest %s completion has been denied." % quest.title,
            body=""
            )
        return reverse('quests:list')
Exemple #7
0
    def get_redirect_url(self, pk):
        """
        Checks if the current user has permission to confirm the quest completion.
        Confirms the quest completion and informs and credits the quester if successful.
        Returns the redirect URL as a string.
        """
        quest = Quest.objects.get(pk=pk)

        # check permission
        if self.request.user != quest.relation.owner or quest.status != 'M':
            return reverse('quests:list')

        # update quest
        quest.status = 'D'
        quest.save()

        # update balance
        relation = Relation.objects.get(owner=self.request.user,
                                        quester=quest.relation.quester)
        relation.balance += quest.rating
        relation.save()

        # inform quester
        messages.add_message(
            self.request, messages.INFO,
            'Quest completion has been confirmed. %s earned %s carrot%s.' %
            (quest.relation.quester, quest.rating, "s"[quest.rating == 1:]))
        pm_write(
            sender=self.request.user,
            recipient=quest.relation.quester,
            subject=
            "Quest %s completion has been confirmed. You earned %s carrot%s!" %
            (quest.title, quest.rating, "s"[quest.rating == 1:]),
            body="")
        return reverse('quests:list')
Exemple #8
0
    def get_redirect_url(self, pk):
        """
        Checks if the current user has permission to confirm the quest completion.
        Confirms the quest completion and informs and credits the quester if successful.
        Returns the redirect URL as a string.
        """
        quest = Quest.objects.get(pk=pk)

        # check permission
        if self.request.user != quest.relation.owner or quest.status != 'M':
            return reverse('quests:list')

        # update quest
        quest.status = 'D'
        quest.save()
        
        # update balance
        relation = Relation.objects.get(owner=self.request.user, quester=quest.relation.quester)
        relation.balance += quest.rating
        relation.save()

        # inform quester
        messages.add_message(self.request, messages.INFO, 'Quest completion has been confirmed. %s earned %s carrot%s.' % (quest.relation.quester, quest.rating, "s"[quest.rating==1:]))
        pm_write(
            sender=self.request.user,
            recipient=quest.relation.quester,
        subject="Quest %s completion has been confirmed. You earned %s carrot%s!" % (quest.title, quest.rating, "s"[quest.rating==1:]),
            body=""
            )
        return reverse('quests:list')
Exemple #9
0
def cancel_game_ajax(request):
    """Cancel a game appointment from calendar ajax post."""
    user = request.user
    if request.method == 'POST':
        pk = int(request.POST.get('pk'))
        game_appointment = get_object_or_404(GameAppointmentEvent, pk=pk)
        if user in game_appointment.users.all():
            opponent = game_appointment.opponent(user)
            game_appointment.delete()
            # send a message
            subject = user.username + ' has cancel your game appointment.'
            plaintext = loader.get_template('fullcalendar/messages/game_cancel.txt')
            context = {
                'user': user,
                'date': game_appointment.start
            }
            message = plaintext.render(context)
            pm_write(
                sender=user,
                recipient=opponent,
                subject=subject,
                body=message,
                skip_notification=False
            )
            return HttpResponse('success')
Exemple #10
0
def api_send_message(request):
    User = get_user_model()
    sender_user = request.user
    print sender_user
    recipient = request.GET.get('recipient')
    if recipient is None:
        recipient = request.POST.get('recipient')
        if recipient is None:
            # have to get it from the body because Django request.POST only contains form data
            body = json.loads(request.body)
            recipient = body['recipient']
            print('recipient %s' % recipient)
            if recipient is None:
                print("recipient was none")
                print request

    recipient_user = User.objects.get(username=recipient)
    print('sender')
    print(sender_user, recipient_user)
    # sender=request.GET.get('sender') # for demo purposes
    # sender_user=User.objects.get(username=sender) # for demo purposes
    message_to_send = max(request.GET.get('message'),
                          request.POST.get('message'),
                          body['message'] if 'message' in body else None)
    print pm_write(sender=sender_user,
                   recipient=recipient_user,
                   subject='',
                   body=message_to_send)
    return HttpResponse('{"status": "Message sent"}')
Exemple #11
0
    def fail(self):
        """
        Fails the quest,
        updates the relation balance if it was a forced quest
        and informs owner and quester.
        """

        deduction = 0
        loss_message = ""
        if self.bomb:
            if self.relation.balance >= self.rating:
                self.relation.balance -= self.rating
                self.relation.save()
                deduction = self.rating
                loss_message = "You lost %s carrot%s." % (deduction, "s"[deduction==1:])
            else:
                defuction = self.relation.balance
        self.status = 'F'
        self.save()
        # notify owner
        pm_write(
            sender=self.relation.quester,
            recipient=self.relation.owner,
            subject="Quest %s has failed. %s lost %s carrot%s." % (
                self.title, self.relation.quester.title(), deduction, "s"[deduction==1:]),
            body=""
            )
        # notify quester
        pm_write(
            sender=self.relation.owner,
            recipient=self.relation.quester,
            subject="Quest %s has failed. %s" % (self.title, loss_message),
            body=""
            )
Exemple #12
0
 def notify_create(self, sender, receiver, from_game_request):
     """
     Called once at the creation of the game appointment.
     Sends a message to inform the receiver.
     """
     if from_game_request is True:
         subject = receiver.username + ' has accepted your game request.'
         plaintext = loader.get_template(
             'fullcalendar/messages/game_request_accepted.txt')
         context = {'user': receiver, 'date': self.start}
         message = plaintext.render(context)
         pm_write(sender=receiver,
                  recipient=sender,
                  subject=subject,
                  body=message,
                  skip_notification=False)
     else:
         subject = sender.username + ' has planned a game appointment on ' + self.start.strftime(
             '%d %b')
         plaintext = loader.get_template(
             'fullcalendar/messages/game_appointment.txt')
         context = {'user': sender, 'date': self.start}
         message = plaintext.render(context)
         pm_write(sender=sender,
                  recipient=receiver,
                  subject=subject,
                  body=message,
                  skip_notification=False)
     if self.private is not True:
         self.notify_on_discord(sender, receiver)
Exemple #13
0
    def get_success_url(self):
        date = self.object.date
        find_offers = Offer.objects.filter(date=date)

        category = self.object.category
        request_time = Q(time__contains=self.object.time[0])
        for r in self.object.time[1:]:
            request_time |= Q(time__contains=r)
        request_category = Q(category__contains=category[0])

        find_offers = find_offers.filter(request_time & request_category).all()
        find_offers = discriminate_offers(self.request, find_offers)

        for offer in find_offers:
            subject = _("Une correspondance a été trouvée !")
            body1 = _("Nous avons trouvé une demande correspondant à une de vos offre d'aide !\nCette demande d'aide a été faite par l'utilisateur {user} ({username}) et a pour titre {title}.\n"
                "Vous pouvez consulter cette demande et vous proposer comme volontaire en suivant ce lien :\nhttp://{meta}{link}\n"
                "Si vous décidez de vous proposez pour cette demande et que votre offre d'aide n'est donc plus valable,"
                " vous pouvez annuler votre offre d'aide via la page d'accueil de votre branche ou la page d'accueil du site.")\
            .format(user=self.object.receiver.get_full_name(), title=self.object.title, link=self.object.get_absolute_url(), username=self.object.receiver, meta=self.request.META['HTTP_HOST'])

            pm_write(self.object.receiver, offer.donor, subject, body1)

            body2 = _("Nous avons trouvé une offre correspondant à une de vos demande d'aide !\nCette offre d'aide a été faite par l'utilisateur {user} ({username}) et correspond a votre demande {title}.\n"
                "Un message automatique a été envoyé à {user} ({username}) pour l'informer de cette correspondance et celui-ci devrait se proposer comme volontaire pour votre demande sous peu.")\
            .format(user=offer.donor.get_full_name(), title=self.object.title, username=offer.donor)

            pm_write(offer.donor, self.object.receiver, subject, body2)
        return self.object.get_absolute_url()
Exemple #14
0
    def get_redirect_url(self, pk):
        """
        Checks if the current user has permission to decline the relation.
        Declines the relation and informs the owner if successful.
        Returns the redirect URL as a string.
        """
        relation = Relation.objects.get(pk=pk)

        # check permission
        if self.request.user != relation.quester or relation.status != 'C':
            return reverse('relations:list')

        # update relation
        relation.status = 'R'
        relation.save()

        # inform owner
        pm_write(
            sender=self.request.user,
            recipient=relation.owner,
            subject="Relation '%s' has been declined." % relation,
            body=""
            )
        
        messages.add_message(self.request, messages.INFO, 'Relation has been declined.')
        return reverse('relations:list')
Exemple #15
0
    def get_redirect_url(self, pk):
        """
        Checks if the current user has permission to complete the quest.
        Completes the quest and informs the owner if successful.
        Returns the redirect URL as a string.
        """
        quest = Quest.objects.get(pk=pk)

        # check permission
        if self.request.user != quest.relation.quester or quest.status != 'A':
            return reverse('quests:list')

        # update quest
        quest.status = 'M'
        quest.save()

        # inform owner
        messages.add_message(
            self.request, messages.INFO,
            'Quest has been marked as completed. Owner has been informed.')
        pm_write(sender=self.request.user,
                 recipient=quest.relation.owner,
                 subject="Quest %s has been marked as completed." %
                 quest.title,
                 body="")
        return reverse('quests:list')
Exemple #16
0
def return_check(request, pk):
    tool = Tool.objects.get(id=pk)
    if request.method == 'POST':
        form = CheckReturn(request.POST)
        if form.is_valid():
            data = form.cleaned_data
            returned = data['returned']
            damaged = data['damaged']
            if returned:
                if damaged:
                    tool.status = 'D'
                    tool.save()
                    pm_write(
                        sender=User.objects.get(id=tool.owner.id),
                        recipient=User.objects.get(id=tool.borrower.id),
                        subject='Tool: ' + tool.toolname + ' Damaged',
                        body='The tool you have borrowed has been returned, but the condition has been marked as'
                             + ' damaged.\n'
                             + 'Please get in contact with the owner to make reparations for this damage.\n'
                             + 'The admin has been notified, and MAY suspend your account until this has been resolved')
                else:
                    tool.status = 'A'
                    tool.save()
                return HttpResponseRedirect('/tool/returned/')
    else:
        form = CheckReturn()
    return render(request, 'Tool/return_check.html', {'form' : form})
Exemple #17
0
def approve_request(request, pk):
    tool = Tool.objects.get(id=pk)
    if request.method == 'POST':
        form = ApproveForm(request.POST)  # A form bound to the POST data
        if form.is_valid():
            data = form.cleaned_data
            allow = data['allow']
            if allow:
                tool.status = 'P'
                tool.borrows += 1
                tool.save()
                return HttpResponseRedirect('/tool/requested/')
            else:
                tool.status = 'A'
                tool.save()
                body = data['rejection_message']
                message = 'Your request has been denied.\n The owners message is included below.\n' + body
                pm_write(sender=request.user,
                    recipient=User.objects.get(id=tool.borrower.id),
                    subject='Tool: ' + tool.toolname + ' ',
                    body=message)
                return HttpResponseRedirect('/tool/requested/')
    else:
        form = ApproveForm()  # An unbound form
    return render(request, 'Tool/approve_request.html', {'form': form})
Exemple #18
0
def branch_ban(request, branch_id, user_id):
    """ Ban an user form the branch id """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    if can_manage(user, request.user):
        try:
            to_remove = BranchMembers.objects.get(branch=branch_id,
                                                  user=user_id)
            to_remove.delete()
            branch.banned.add(to_remove.user)
        except:
            pass

        subject = _('Bannissement de la branche {branch}').format(
            branch=branch.name)
        body = _(
            'Vous avez été banni de la branche {branch}. Vous ne pouvez à présent plus rejoindre cette branche. Pour plus d\'informations, contactez un adminstrateur ou l\'officier en charge de la branche en question'
        ).format(branch=branch.name)
        pm_write(request.user, user, subject, body)
        messages.add_message(
            request, messages.INFO,
            _('{user} a été banni de la branche {branch}').format(
                branch=branch, user=user))

        Offer.objects.filter(branch=branch, donor=user).delete()
        Demand.objects.filter(branch=branch,
                              receiver=user,
                              success=None,
                              closed=False).delete()

    else:
        return refuse(request)

    return redirect(branch.get_absolute_url())
Exemple #19
0
def secciones_new(request, tutorpk):
    tutor = User.objects.get(pk=tutorpk)
    admin = User.objects.get(username="******")
    if request.method == "POST":
        form = SeccionMonitoriaForm(request.POST)
        if form.is_valid():
            seccion = form.save(commit=False)
            seccion.estudiante = request.user
            seccion.tutor = tutor

            pm_write(admin, tutor, "Nueva Solicitud de monitoria.",
                     "Hola " + tutor.get_short_name() + ",\n\n Tienes una"
                                                        " nueva solicitud"
                                                        " pendiente en tu lista"
                                                        " de monitorias.\n\n"
                                                        "Estudiante: " +
                     seccion.estudiante.get_full_name() + "\nMateria: " + seccion.subject.name + "\n\n-Quicktutors Staff.")

            if seccion.payment_method == "online":
                seccion.seccion_payed = True
                seccion.save()
                return redirect('/secciones/online_payment/')
            else:
                seccion.seccion_payed = False
                seccion.save()
                return redirect('/secciones/onsite_payment')

    else:
        form = SeccionMonitoriaForm()
    return render(request, 'monitorias/secciones_new.html', {'form': form, 'tutor': tutor})
Exemple #20
0
    def get_success_url(self):
        date = self.object.date
        find_offers = Offer.objects.filter(date=date)

        category = self.object.category
        request_time = Q(time__contains=self.object.time[0])
        for r in self.object.time[1:]:
            request_time |= Q(time__contains=r)
        request_category = Q(category__contains=category[0])

        find_offers = find_offers.filter(request_time & request_category).all()
        find_offers = discriminate_offers(self.request, find_offers)

        for offer in find_offers:
            subject = _("Une correspondance a été trouvée !")
            body1 = _("Nous avons trouvé une demande correspondant à une de vos offre d'aide !\nCette demande d'aide a été faite par l'utilisateur {user} ({username}) et a pour titre {title}.\n"
                "Vous pouvez consulter cette demande et vous proposer comme volontaire en suivant ce lien :\nhttp://{meta}{link}\n"
                "Si vous décidez de vous proposez pour cette demande et que votre offre d'aide n'est donc plus valable,"
                " vous pouvez annuler votre offre d'aide via la page d'accueil de votre branche ou la page d'accueil du site.")\
            .format(user=self.object.receiver.get_full_name(), title=self.object.title, link=self.object.get_absolute_url(), username=self.object.receiver, meta=self.request.META['HTTP_HOST'])

            pm_write(self.object.receiver, offer.donor, subject, body1)

            body2 = _("Nous avons trouvé une offre correspondant à une de vos demande d'aide !\nCette offre d'aide a été faite par l'utilisateur {user} ({username}) et correspond a votre demande {title}.\n"
                "Un message automatique a été envoyé à {user} ({username}) pour l'informer de cette correspondance et celui-ci devrait se proposer comme volontaire pour votre demande sous peu.")\
            .format(user=offer.donor.get_full_name(), title=self.object.title, username=offer.donor)

            pm_write(offer.donor, self.object.receiver, subject, body2)
        return self.object.get_absolute_url()
Exemple #21
0
def accept_game_request_ajax(request):
    """accept a game request from calendar ajax post."""
    user = request.user
    if request.method == 'POST':
        pk = int(request.POST.get('pk'))
        game_request = get_object_or_404(GameRequestEvent, pk=pk)
        sender = game_request.sender
        game_appointment = GameAppointmentEvent(
            start=game_request.start,
            end=game_request.end
        )
        game_appointment.save()
        game_appointment.users.add(user, sender)
        game_request.delete()
        # send a message
        subject = user.username + ' has accepted your game request.'
        plaintext = loader.get_template('fullcalendar/messages/game_request_accepted.txt')
        context = {
            'user': user,
            'date': game_appointment.start
        }
        message = plaintext.render(context)
        pm_write(
            sender=user,
            recipient=sender,
            subject=subject,
            body=message,
            skip_notification=False
        )
        return HttpResponse('success')
Exemple #22
0
def invite_member(request, team_id):
    if request.method == 'POST':
        team = get_object_or_404(Team, pk=team_id)
        if request.user != team.leader:
            messages.error(request, _(u"You are not the team leader, you cannot add team members."))
        else:
            user_id = request.POST.get("selectMember")
            user = get_object_or_404(User, pk=user_id)
            if len(Member.objects.filter(user=user, team=team)) > 0:
                messages.error(request, unicode(user) + _(u" is already on your team."))
            else:
                existing_invitation = Invitation.objects.filter(invitee=user, team=team)
                if not existing_invitation:
                    invitation = Invitation()
                    invitation.team = team
                    invitation.invitee = user
                    invitation.token = uuid.uuid1().hex
                    invitation.save()
                    invitation_message = "You have been invited to <a href='" + team.get_absolute_url() + "'>" + team.title \
                                         + "</a> by " + unicode(request.user)
                    invitation_message += ". You can either "
                    invitation_message += "<a href='" + team.get_absolute_url() + "join " + "'> Accept</a> or"
                    invitation_message += "<a href='" + team.get_absolute_url() + "remove_invitation/" + \
                                          invitation.token + "'> Decline</a> the invitation."
                    pm_write(request.user, user, invitation.token, body=invitation_message)

                    messages.success(request, unicode(user) + _(u' was invited to your team'))
                else:
                    messages.error(request, unicode(user) + _(u' has already been invited to your team'))

    return redirect(team)
Exemple #23
0
def manage_success(request, success_demand_id):
    """ View for a job who has been completed """
    success = get_object_or_404(SuccessDemand, pk=success_demand_id)
    demand = success.demand

    form = CommentConfirmForm()

    if can_manage_branch_specific(success.ask_to, request.user,
                                  success.branch):
        if request.POST:
            form = CommentConfirmForm(request.POST)
            if form.is_valid():
                if 'accept' in request.POST:
                    if success.time > 100000:
                        success.time = 100000
                    if success.time < 0:
                        success.time = 0

                    demand.real_time = success.time
                    demand.success = True

                    demand.donor.credit += success.time
                    demand.donor.save()
                    demand.receiver.credit -= success.time
                    demand.receiver.save()

                    subject = _("Job confirmé")
                    body = _("L'utilisateur {user} ({username}) a confirmé que vous aviez accompli le job {job} avec succès ! Votre compte a donc été crédité de {time} minutes.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé le commentaire suivant : {comment}")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)
                    success.delete()
                    demand.save()

                    return redirect('home')
                if 'decline' in request.POST:
                    success.delete()
                    demand.success_fill = False
                    demand.save()

                    subject = _("Job refusé")
                    body = _("L'utilisateur {user} ({username}) a déclaré que vous n'aviez pas passé {time} minutes pour accomplir le job {job}. Votre compte n'a donc pas été crédité.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé un commentaire, expliquant pourquoi il n'a pas désiré créditer votre compte : {comment}\n"
                        "Vous pouvez recréer une demande de confirmation avec un nouveau montant de crédit correspondant plus à la perception du demandeur d'aide.\n"
                        "Si vous ne parvenez pas à trouver un terrain d'entente avec l'utilisateur {user} ({username}), vous pouvez contacter un administrateur pour régler le problème.")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)

                    return redirect('home')

        return render(request, 'job/manage_success.html', locals())

    else:
        return refuse(request)
Exemple #24
0
def manage_success(request, success_demand_id):
    """ View for a job who has been completed """
    success = get_object_or_404(SuccessDemand, pk=success_demand_id)
    demand = success.demand

    form = CommentConfirmForm()

    if can_manage_branch_specific(success.ask_to, request.user, success.branch):
        if request.POST:
            form = CommentConfirmForm(request.POST)
            if form.is_valid():
                if 'accept' in request.POST:
                    if success.time > 100000:
                        success.time = 100000
                    if success.time < 0:
                        success.time = 0

                    demand.real_time =  success.time
                    demand.success = True


                    demand.donor.credit += success.time
                    demand.donor.save()
                    demand.receiver.credit -= success.time
                    demand.receiver.save()

                    subject = _("Job confirmé")
                    body = _("L'utilisateur {user} ({username}) a confirmé que vous aviez accompli le job {job} avec succès ! Votre compte a donc été crédité de {time} minutes.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé le commentaire suivant : {comment}")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)
                    success.delete()
                    demand.save()

                    return redirect('home')
                if 'decline' in request.POST:
                    success.delete()
                    demand.success_fill = False
                    demand.save()

                    subject = _("Job refusé")
                    body = _("L'utilisateur {user} ({username}) a déclaré que vous n'aviez pas passé {time} minutes pour accomplir le job {job}. Votre compte n'a donc pas été crédité.\n")\
                    .format(user=demand.receiver.get_full_name(), job=demand.title, time=success.time, username=demand.receiver)
                    if form.cleaned_data['comment'] != "":
                        body += _("L'utilisateur {user} ({username}) a laissé un commentaire, expliquant pourquoi il n'a pas désiré créditer votre compte : {comment}\n"
                        "Vous pouvez recréer une demande de confirmation avec un nouveau montant de crédit correspondant plus à la perception du demandeur d'aide.\n"
                        "Si vous ne parvenez pas à trouver un terrain d'entente avec l'utilisateur {user} ({username}), vous pouvez contacter un administrateur pour régler le problème.")\
                        .format(user=demand.receiver.get_full_name(), comment=form.cleaned_data['comment'], username=demand.receiver)
                    pm_write(demand.receiver, demand.donor, subject, body)

                    return redirect('home')

        return render(request,'job/manage_success.html', locals())

    else :
        return refuse(request)
Exemple #25
0
    def get_success_url(self):
        messages.add_message(self.request, messages.INFO, _('Demande envoyée'))

        subject = _("Confirmation de job accompli")
        body = _("L'utilisateur {user} ({username}) affirme avoir accompli le job suivant : {job}.\nIl déclare avoir pris {time} minutes pour accomplir ce job.\n"
            "Si ces informations vous semble correctes, vous pouvez confirmer que ce job a été accompli avec succès.")\
        .format(user=self.object.asked_by.get_full_name(), job=self.object.demand.title, time=self.object.time, username=self.object.asked_by)
        pm_write(self.object.asked_by, self.object.ask_to, subject, body)
        return reverse('home')
Exemple #26
0
 def inform_user(self):
     subject = "New relation requested by %s" % self.object.owner
     body = """<a href="%s">%s</a>""" % (self.object.get_absolute_url(), strip_tags(self.object.owner))
     pm_write(
         sender=self.request.user,
         recipient=self.object.quester,
         subject=subject,
         body=body
         )
Exemple #27
0
 def inform_user(self):
     subject = "New reward!"
     body = """<a href="%s">%s</a>""" % (self.object.get_absolute_url(), self.object.title)
     pm_write(
         sender=self.request.user,
         recipient=self.object.relation.quester,
         subject=subject,
         body=body
         )
Exemple #28
0
    def get_success_url(self):
        messages.add_message(self.request, messages.INFO, _('Demande envoyée'))

        subject = _("Confirmation de job accompli")
        body = _("L'utilisateur {user} ({username}) affirme avoir accompli le job suivant : {job}.\nIl déclare avoir pris {time} minutes pour accomplir ce job.\n"
            "Si ces informations vous semble correctes, vous pouvez confirmer que ce job a été accompli avec succès.")\
        .format(user=self.object.asked_by.get_full_name(), job=self.object.demand.title, time=self.object.time, username=self.object.asked_by)
        pm_write(self.object.asked_by, self.object.ask_to, subject, body)
        return reverse('home')
Exemple #29
0
 def inform_user(self):
     subject = "New relation requested by %s" % self.object.owner
     body = """<a href="%s">%s</a>""" % (self.object.get_absolute_url(), self.object.owner)
     pm_write(
         sender=self.request.user,
         recipient=self.object.quester,
         subject=subject,
         body=body
         )
Exemple #30
0
def _send_message(request):
    ''' Send message between any requested recipient sender pair '''
    User = get_user_model()
    recipient=request.GET.get('recipient')
    sender=request.GET.get('sender')
    message_to_send=request.GET.get('body')
    recipient_user=User.objects.get(username=recipient)
    sender_user=User.objects.get(username=sender)
    print pm_write(sender=sender_user, recipient=recipient_user, subject='', body=message_to_send)
    return HttpResponse("Message sent")
Exemple #31
0
def notify_owner_of_request(request, book):
    pm_write(
        sender=request.user,
        recipient=book.owner,
        subject=f"Request to borrow your book {book.title}",
        body=f"{request.user.username} has asked to borrow your book. Please reply to this message, and arrange a time and place where the book can be picked up. Please also send a message if you cannot lend the book.",
        auto_archive=True,
        skip_notification=True,
    )
    send_book_request(request, book)
Exemple #32
0
def volunteer_accept(request, volunteer_id):
    """ Accept an help from the volunteer_id """
    demandProposition = DemandProposition.objects.get(pk=volunteer_id)
    demand = demandProposition.demand

    if can_manage_branch_specific(demand.receiver, request.user,
                                  demand.branch):
        demandProposition.accepted = True
        demandProposition.save()

        subject = _("Je vous ai choisi pour '") + demand.title + "'"
        body = _(
            " Je vous ai choisi pour effectuer le job '") + demand.title + "'"
        body += '\n\n' + _('Lieu : ') + demand.location
        body += '\n' + _('Date : ') + formats.date_format(
            demand.date, "DATE_FORMAT")
        body += '\n' + _('Heure(s) désirée(s) : ') + demand.get_verbose_time()
        body += '\n' + _('Description : ') + demand.description

        body += '\n'
        if demand.receiver.emergency_contacts.count() > 0:
            body += '\n' + _(
                'En cas d\'incident durant cette tâche, voici les personnes à contacter :'
            )
            for ec in demand.receiver.emergency_contacts.all():
                body += '\n' + _('Prénom :') + ' ' + ec.first_name
                body += '\n' + _('Nom :') + ' ' + ec.last_name
                body += '\n' + _('Téléphone fixe :') + ' ' + ec.phone_number
                body += '\n' + _('Téléphone mobile :') + ' ' + ec.mobile_number
                body += '\n' + _(
                    'Langues parlées :') + ' ' + ec.get_verbose_languages()
                body += '\n'

        body += '\n\n' + _(
            'N\'hésitez pas à me contacter pour de plus amples informations')
        body += '\n' + _('À bientôt,') + '\n'
        body += demand.receiver.first_name

        pm_write(demand.receiver, demandProposition.user, subject, body)

        for vol in DemandProposition.objects.filter(demand=demand,
                                                    accepted=False):
            vol.delete()

        demand.closed = True
        demand.km = demandProposition.km
        if not demand.km:
            demand.km = 0
        demand.donor = demandProposition.user
        demand.save()

        messages.add_message(request, messages.INFO,
                             _('Vous avez accepté cette aide !'))
        return redirect(demand.get_absolute_url())
    return redirect('home')
Exemple #33
0
 def inform_user(self):
     """
     Informs the quester of the newly created reward.
     """
     subject = "New reward!"
     body = """<a href="%s">%s</a>""" % (self.object.get_absolute_url(),
                                         strip_tags(self.object.title))
     pm_write(sender=self.request.user,
              recipient=self.object.relation.quester,
              subject=subject,
              body=body)
Exemple #34
0
    def get_success_url(self):

        subject = self.request.user.get_full_name() + ' ' + _("a commenté votre demande '") + self.get_object().title + '\''
        body = self.request.user.get_full_name() + ' ' + _("a commenté votre demande '") + self.get_object().title + '\''
        body += '\n\n' + _('Commentaire : ') + self.object.comment
        body += '\n\n' + _('Vous pouvez lui répondre en vous rendant sur votre demande:')
        body += '\n' + 'http://' + self.request.META['HTTP_HOST'] + self.get_object().get_absolute_url()

        pm_write(self.request.user, self.get_object().receiver, subject, body)

        return self.get_object().get_absolute_url() + '#' + str(self.object.id)
Exemple #35
0
def invite(request, kind, post_id):
    if kind == 'a':
        post = Activity.objects.get(id=post_id)

    elif kind == 'c':
        post = Course.objects.get(id=post_id)
    to_user_name = request.GET['invite']
    to_user = User.objects.get(username=to_user_name)
    from_user = request.user
    pm_write(from_user, to_user, u'邀请: '+post.title, body=u'快来参加这个活动吧:<a href="'+post.get_absolute_url()+u'">链接</a>')

    return redirect('post:detail', kind=kind, post_id=post_id)
Exemple #36
0
def invite_member(request, team_id):
    team = get_object_or_404(Team, pk=team_id)

    if request.user != team.leader:
        messages.error(request, _(u'Only the team leader may invite members.'))
        return redirect(team)

    username = request.POST.get('user')
    if not username:
        messages.error(request, _(u'No username was specified.'))
        return redirect(team)
    elif username == request.user.username:
        messages.error(request, _(u'You can\'t invite yourself.'))
        return redirect(team)

    user_qs = User.objects.filter(username=username)
    if not user_qs.exists():
        messages.error(request,
                       _(u'User {user} was not found.').format(user=username))
        return redirect(team)
    user = user_qs[0]

    if Member.objects.filter(team=team, user=user).exists():
        messages.error(
            request,
            _(u'User {user} is already on the team.').format(user=user))
        return redirect(team)

    if Invitation.objects.filter(team=team, invitee=user).exists():
        messages.error(
            request,
            _(u'User {user} is already invited to the team.').format(
                user=user))
        return redirect(team)

    invitation = Invitation()
    invitation.team = team
    invitation.invitee = user
    invitation.token = uuid.uuid1().hex
    invitation.save()

    context = {
        'team': team,
        'inviter': request.user,
    }
    message = render_to_string('team/message/team_invitation.html', context,
                               request).strip()
    pm_write(request.user, user, invitation.token, body=message)

    messages.success(
        request,
        _(u'User {user} was invited to the team.').format(user=user))
    return redirect(team)
Exemple #37
0
 def inform_user(self):
     """
     Informs the quester of the newly created quest.
     """
     subject = "New quest!"
     body = """<a href="%s">%s</a>""" % (self.object.get_absolute_url(), strip_tags(self.object.title))
     pm_write(
         sender=self.request.user,
         recipient=self.object.relation.quester,
         subject=subject,
         body=body
         )
Exemple #38
0
def add_mentor(sender, **kwargs):

    user = kwargs.get('new_user', None)
    mentor = kwargs.get('inviting_user', None)
    if user and mentor:
        mentor.godchildren.add(user.profile)
        # send notification to mentor
        pm_write(sender=user,
                 recipient=mentor,
                 subject=_('%(username)s accepted your invitation' %
                           {'username': user.username}),
                 body='')
Exemple #39
0
def add_mentor(sender, **kwargs):
    
    user = kwargs.get('new_user', None)
    mentor = kwargs.get('inviting_user', None)
    if user and mentor:    
        mentor.godchildren.add(user.profile)
        # send notification to mentor
        pm_write(
                sender = user,
                recipient = mentor,
                subject = _('%(username)s accepted your invitation' % {'username': user.username}),
                body = '')
Exemple #40
0
def create_payment(request, carChoice, days, datefrom, dateto):
    car = Car.objects.get(id=carChoice)
    diff = abs((car.available_from-car.available_to).days)
    if request.method == 'POST':
            payment = Payment(
                amount = (car.price_per_unit * days) + ((car.price_per_unit * days) / 10) + (((car.price_per_unit * days) / 10) * 3),
                days = days,
                personpaying = request.user.person,
                carchoice = car,
                rating = 5,
                datefrom = datefrom,
                dateto = dateto,
            )
            payment.save()
            # We want to disable the listing until the user has confirmed the ride was successful. 
            car.is_rented = "none"
            # Send a message from admin to the successful lister and listee
            pm_write(
                sender=User.objects.all().get(username="******"),
                recipient=car.owner.user,
                subject="Congratulations, you have successfully rented your car!",
                body='The user ' + request.user.username + ' has rented your car and their payment of $' + str((car.price_per_unit * days) + ((car.price_per_unit * days) / 10) + (((car.price_per_unit * days) / 10) * 3)) + ' has processed successfully. They should contact you shortly. Please note the payment amount does not include our service fee or GST. You will be credited $' + str((((car.price_per_unit * days) - ((((car.price_per_unit * days) + ((car.price_per_unit * days) / 10) + (((car.price_per_unit * days) / 10) * 3))/100)*5.5)) - (car.price_per_unit * days) / 10)) + '. <br><b>PLEASE SEND US A MESSAGE (REPLY) IF YOU WISH TO RELIST THIS BOOKING OR YOU CAN SIMPLY ADD A NEW LISTING.</b><br>Thank you for using Aller Now.',
            )

            pm_write(
                sender=User.objects.all().get(username="******"),
                recipient=request.user,
                subject="Congratulations, you have successfully rented a car!",
                body='You have rented a car from ' + car.owner.user.username + ' and your payment amount ($' + str((car.price_per_unit * days) + ((car.price_per_unit * days) / 10) + (((car.price_per_unit * days) / 10) * 3)) + ') was processed successfully. you should see a button in your dashboard shortly to contact the owner for pickup and dropoff information. Thank you for using Aller Now.',
            )
            
            car.save()
            car.owner.user.person.credit_aud = car.owner.user.person.credit_aud + (((car.price_per_unit * days) - ((((car.price_per_unit * days) + ((car.price_per_unit * days) / 10) + (((car.price_per_unit * days) / 10) * 3))/100)*5.5)) - (car.price_per_unit * days) / 10)
            request.user.person.credit_aud = request.user.person.credit_aud - ((car.price_per_unit * days) + ((car.price_per_unit * days) / 10))
            request.user.person.save()
            car.owner.user.person.save()
            messages.success(request, ('Your payment was successfully completed!'))
            return redirect('dashboard')
    else:
        paymentf = PaymentForm()
    return render(request, 'AllerNow/payment_car.html', {
        'car': car,
        'payment': paymentf,
        'days': days,
        'remainingCredit': request.user.person.credit_aud - ((car.price_per_unit * days) + ((car.price_per_unit * days) / 10) - (((car.price_per_unit * days) / 10) * 3)),
        'total': ((car.price_per_unit * days) + ((car.price_per_unit * days) / 10) + (((car.price_per_unit * days) / 10) * 3)),
        'gst': ((car.price_per_unit * days) / 10),
        'maxDays': diff,
        'insurance': (((car.price_per_unit * days) / 10) * 3),
        'datefrom': datefrom,
        'dateto': dateto,
    })
Exemple #41
0
def _send_message(request):
    ''' Send message between any requested recipient sender pair '''
    User = get_user_model()
    recipient = request.GET.get('recipient')
    sender = request.GET.get('sender')
    message_to_send = request.GET.get('body')
    recipient_user = User.objects.get(username=recipient)
    sender_user = User.objects.get(username=sender)
    print pm_write(sender=sender_user,
                   recipient=recipient_user,
                   subject='',
                   body=message_to_send)
    return HttpResponse("Message sent")
Exemple #42
0
def verified_status_refuse_view(request, user_id):
    """Refuse verified status to user with user_id, send a specific message and remove verified demand"""
    user = get_object_or_404(User, pk=user_id)
    if not can_manage(user, request.user) or user.id == request.user.id:
        return refuse(request)
    user.is_verified = False
    user.save()
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    verified_documents.delete()
    subject = _("Accord du status de membre vérifié")
    body = _("Le status de membre vérifié vous a été refusé. Pour plus d'informations, contactez l'officier responsable de votre branche.")
    pm_write(request.user, user, subject, body)
    messages.add_message(request, messages.INFO, _('Droit refusé et demande supprimée'))
    return redirect(user.get_absolute_url())
Exemple #43
0
def secciones_rechazar(request, pk):
    seccion = SeccionMonitoria.objects.get(pk=pk)
    seccion.status = "rechazada"
    seccion.save()
    # Enviar mensaje al estudiante con el mensaje de que ha sido rechazada la solicitud
    pm_write(seccion.tutor, seccion.estudiante,
             "Tu seccion de monitoria para la materia " + seccion.subject.name + "ha sido rechazada.",
             "Hola " + seccion.estudiante.get_short_name() +",\n\n Lamento informarte que no podre impartirte" \
                                                           " la seccion de monitoria solicitada ya que no estare" \
                                                           " disponible en ese horario. pero espero que en un futuro" \
                                                           " podamos estudiar juntos!\n\n" \
                                                           "Gracias por utilizar nuestro servicio,\n\n" \
                                                           "-" + seccion.tutor.get_short_name())
    return redirect('/secciones/')
Exemple #44
0
    def get_success_url(self):
        demand = Demand.objects.get(pk=self.kwargs['demand_id'])
        volunteer = self.object.user

        subject = volunteer.get_full_name() + ' ' + _("vous offre son aide pour '") + demand.title + "'"
        body = volunteer.get_full_name() + ' ' + _("vous offre son aide pour '") + demand.title + "'"
        body += '\n\n' + _('Commentaire : ') + self.object.comment
        body += '\n' + _('Km de chez vous : ') + str(self.object.km)
        body += '\n' + _('Heure(s) choisies(s) : ') + self.object.get_verbose_time()
        body += '\n\n' + _('Vous pouvez accepter son offre d\'aide en vous rendant sur votre demande d\'aide:')
        body += '\n' + 'http://' + self.request.META['HTTP_HOST'] + demand.get_absolute_url()

        pm_write(volunteer, demand.receiver, subject, body)

        return demand.get_absolute_url()
Exemple #45
0
def verified_status_giving_view(request, user_id):
    """Give verified status to user with user_id and send a message"""
    user = get_object_or_404(User, pk=user_id)
    if not can_manage(user, request.user) or user.id == request.user.id:
        return refuse(request)
    user.is_verified = True
    user.user_type = MemberType.VERIFIED_MEMBER
    user.save()
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    verified_documents.delete()
    subject = _("Accord du status de membre vérifié")
    body = _("Le status de membre vérifié vous a été accordé ! Félicitations.")
    pm_write(request.user, user, subject, body)
    messages.add_message(request, messages.INFO, _('Droit accordé'))
    return redirect(user.get_absolute_url())
Exemple #46
0
def verified_status_giving_view(request, user_id):
    """Give verified status to user with user_id and send a message"""
    user = get_object_or_404(User, pk=user_id)
    if not can_manage(user, request.user) or user.id == request.user.id:
        return refuse(request)
    user.is_verified = True
    user.user_type = MemberType.VERIFIED_MEMBER
    user.save()
    verified_documents = get_object_or_404(VerifiedInformation, user=user_id)
    verified_documents.delete()
    subject = _("Accord du status de membre vérifié")
    body = _("Le status de membre vérifié vous a été accordé ! Félicitations.")
    pm_write(request.user, user, subject, body)
    messages.add_message(request, messages.INFO, _('Droit accordé'))
    return redirect(user.get_absolute_url())
Exemple #47
0
def secciones_aceptar(request, pk):
    seccion = SeccionMonitoria.objects.get(pk=pk)
    seccion.status = "aceptada"
    seccion.save()
    # Enviar mensaje al estudiante con el mensaje de que ha sido rechazada la solicitud
    pm_write(seccion.tutor, seccion.estudiante,
             "Tu seccion de monitoria para la materia " + seccion.subject.name + "ha sido aceptada.",
             "Hola " + seccion.estudiante.get_short_name() + ",\n\n Me complace informarte que estoy disponible"
                                                             " para impartirte tu seccion de monitoria, y me parece bien"
                                                             " el horario seleccionado, asi como lugar de encuentro, estaremos en"
                                                             " contacto por esta via para una futura confirmacion de la"
                                                             " cita.\n\n" \
                                                             "Gracias por utilizar nuestro servicio,\n\n" \
                                                             "-" + seccion.tutor.get_short_name())
    return redirect('/secciones/')
def invite_players(request, cell_id):
    if not request.user.is_authenticated:
        raise PermissionDenied(
            "You must be logged in to invite players to a Cell")
    cell = get_object_or_404(Cell, id=cell_id)
    # check "manage memberships" permissions
    if not cell.player_can_manage_memberships(request.user):
        raise PermissionDenied(
            "You don't have permissions to manage memberships for this Cell")
    if request.method == 'POST':
        form = CustomInviteForm(request.POST)
        if form.is_valid():
            player = get_object_or_404(
                User, username__iexact=form.cleaned_data['username'])
            with transaction.atomic():
                cell.invitePlayer(player, form.cleaned_data['invite_text'])
            message_body = SafeText(
                '###{0} has invited you to join [{1}]({2}).\n [Click Here]({3}) to respond.'
                .format(
                    request.user.get_username(),
                    cell.name,
                    request.build_absolute_uri(
                        reverse("cells:cells_view_cell", args=[cell.id])),
                    request.build_absolute_uri(
                        reverse("cells:cells_rsvp_invite", args=[cell.id])),
                ))
            with transaction.atomic():
                pm_write(sender=request.user,
                         recipient=player,
                         subject="You have been invited to join a Cell",
                         body=message_body,
                         skip_notification=False,
                         auto_archive=True,
                         auto_delete=False,
                         auto_moderators=None)
            return HttpResponseRedirect(
                reverse('cells:cells_invite_players', args=(cell.id, )))
        else:
            print(form.errors)
            return None
    else:
        # Build an invite form
        form = CustomInviteForm(auto_id=False)
        context = {
            'form': form,
            'cell': cell,
        }
        return render(request, 'cells/invite_players.html', context)
Exemple #49
0
def branch_unban(request, branch_id, user_id):
    """ Unban an user from the branch admin """
    branch = get_object_or_404(Branch, pk=branch_id)
    user = get_object_or_404(User, pk=user_id)

    try:
        to_unban = User.objects.get(id=user_id)
        branch.banned.remove(to_unban)
        subject = _('Annulation du bannissement de la branche {branch}').format(branch=branch.name)
        body = _('Nous avons annulé le bannissement de la branche {branch} vous concernant. Vous pouvez à présent rejoindre cette branche si vous le souhaitez.').format(branch=branch.name)
        pm_write(request.user, user, subject, body)
        messages.add_message(request, messages.INFO, _('le bannissement de {user} dans la branche {branch} a été annulé').format(branch=branch, user=user))
    except:
        pass

    return redirect(branch.get_absolute_url())
Exemple #50
0
def volunteer_accept(request, volunteer_id):
    """ Accept an help from the volunteer_id """
    demandProposition = DemandProposition.objects.get(pk=volunteer_id)
    demand = demandProposition.demand

    if can_manage_branch_specific(demand.receiver, request.user, demand.branch):
        demandProposition.accepted = True
        demandProposition.save()

        subject = _("Je vous ai choisi pour '") + demand.title + "'"
        body = _(" Je vous ai choisi pour effectuer le job '") + demand.title + "'"
        body += '\n\n' + _('Lieu : ') + demand.location
        body += '\n' + _('Date : ') + formats.date_format(demand.date, "DATE_FORMAT")
        body += '\n' + _('Heure(s) désirée(s) : ') + demand.get_verbose_time()
        body += '\n' + _('Description : ') + demand.description

        body += '\n'
        if demand.receiver.emergency_contacts.count() > 0:
            body += '\n' + _('En cas d\'incident durant cette tâche, voici les personnes à contacter :')
            for ec in demand.receiver.emergency_contacts.all():
                body += '\n' + _('Prénom :') + ' ' + ec.first_name
                body += '\n' + _('Nom :') + ' ' + ec.last_name
                body += '\n' + _('Téléphone fixe :') + ' ' + ec.phone_number
                body += '\n' + _('Téléphone mobile :') + ' ' + ec.mobile_number
                body += '\n' + _('Langues parlées :') + ' ' + ec.get_verbose_languages()
                body += '\n'

        body += '\n\n' + _('N\'hésitez pas à me contacter pour de plus amples informations')
        body += '\n' + _('À bientôt,') + '\n'
        body += demand.receiver.first_name

        pm_write(demand.receiver, demandProposition.user, subject, body)

        for vol in DemandProposition.objects.filter(demand=demand, accepted=False):
            vol.delete()

        demand.closed = True
        demand.km = demandProposition.km
        if not demand.km:
            demand.km = 0
        demand.donor = demandProposition.user
        demand.save()

        messages.add_message(request, messages.INFO, _('Vous avez accepté cette aide !'))
        return redirect(demand.get_absolute_url())
    return redirect('home')
Exemple #51
0
def test_msg_send(request):
    if request.method == 'POST':
        form = TestForm(request.POST)  # A form bound to the POST data
        if form.is_valid():  # All validation rules pass
            recipient = form.cleaned_data['recipient']
            subject = form.cleaned_data['subject']
            body = form.cleaned_data['body']
            pm_write(
                sender=request.user,
                recipient=User.objects.get(username=recipient),
                subject=subject,
                body=body)
            return HttpResponseRedirect(reverse('postman_inbox'))  # Redirect after POST
    else:
        form = TestForm()  # An unbound form

    return render(request, 'share_user/test.html', {'form': form})
Exemple #52
0
def unsuccess_job(request, demand_id):
    """ View for a job who has not been completed """
    demand = get_object_or_404(Demand, pk=demand_id)

    if can_manage_branch_specific(demand.donor, request.user, demand.branch):
       demand.success_fill=True
       demand.success=False
       demand.save()

       subject = _("Absence lors d'un job")
       body = _("L'utilisateur {user} ({username}) n'était apparemment pas présent pour accomplir le job {job}.\n"
        "S'il s'agit d'une erreur et que {user} ({username}) était bien présent, veuillez contacter un administrateur pour régler le problème.\n"
        "Si vous désirez ne plus demander d'aide à l'utilisateur {user} ({username}), vous pouvez l'ignorer en vous rendant sur son profil.")\
       .format(user=demand.donor.get_full_name(), job=demand.title, username=demand.donor)
       pm_write(demand.donor, demand.receiver, subject, body)

       messages.add_message(request, messages.INFO, _('Vous avez indiqué la tâche {demand} comme non-completée').format(demand=demand))
       return redirect('home')
    else:
        return refuse(request)