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')
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())
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)
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)
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')
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')
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')
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')
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')
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"}')
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="" )
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)
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()
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')
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')
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})
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})
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())
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})
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')
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)
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)
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)
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')
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 )
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 )
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 )
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")
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)
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')
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)
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)
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)
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)
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 )
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='')
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 = '')
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, })
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")
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())
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/')
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()
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())
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)
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())
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')
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})
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)