def sell_book_register(request, ): """ 팔려는 책 등록하기 """ if request.method == 'POST': files = request.FILES.getlist('sell_book_status') form = SellBookRegisterForm(request.POST, request.FILES) if form.is_valid(): sell_book = form.save(seller=request.user.my_seller) sell_isbn = form.data.get('isbn') book_info = Book.objects.get(isbn=sell_isbn) for f in files: BookStatus.objects.create( sell_book_status=sell_book, photo=f, ) if BuyBookRegister.objects.filter(book_info_id=book_info.pk): data = { 'recipient': request.user.username, 'subject': '안녕하세요!', 'body': '{}님이 판매하시려는 책의 구매 리스트에 존재합니다. 구매 리스트를 확인해보세요 :-)'.format(request.user.username), } compose_form = ComposeForm(data) sender = MyUser.objects.get(pk=1) if compose_form.is_valid(): compose_form.save(sender=sender) news = News.objects.filter(follow_other_id=request.user.id) if news: for other in news: data = { 'recipient': other.my_follow.username, 'subject': '{}님께서 새로운 글을 등록했습니다.'.format(request.user.username, ), 'body': 'test', } compose_form = ComposeForm(data) sender = request.user if compose_form.is_valid(): compose_form.save(sender=sender) return redirect('book:sell_book_detail', sell_pk=sell_book.pk) register_form = SellBookRegisterForm() search_form = NaverBooksSearchForm() context = { 'register_form': register_form, 'search_form': search_form, } return render(request, 'book/sell_book_register.html', context)
def signup(request, host_b36): host_id = base36_to_int(host_b36) host_class = get_object_or_404(HostClass, pk=host_id) if host_class.privacy != 'c':# or host_class.is_member(request.user): host_class = HostClass.objects.get(pk=host_id) if request.method == 'POST': sender = request.user subject = 'Request to join %s' % (host_class.course.title) recipients = host_class.members.filter(editor__exact=True) #recipient = host_class.members.get(editor=True) form = ComposeForm({'body': request.POST.get('body'), 'subject':subject, 'recipient':'clay'}) if form.is_valid(): #message_list = form.save(sender=request.user) body = form.cleaned_data['body'] #request.user.message_set.create(message=(u"Message successfully sent.")) from_user = request.user for to_user_hcm in recipients: to_user = to_user_hcm.user hcs = HostClassSignup.requests.create(host_class=host_class, sender=from_user, recipient=to_user, subject=subject, body=body) #hcs = HostClassSignup(host_class=host_class, message=message) #hcs.save() return HttpResponseRedirect('/h/v/%s/' % (host_b36)) else: form = ComposeForm() form.fields['recipient'].initial = ' ' form.fields['subject'].initial = ' ' form.fields['body'].initial = "I would like to take %s." % (host_class.course.title) #expert = HostClassExpert.objects.filter(host_class=host_class) return render_to_response('host/signup.html', { 'host_class': host_class, 'form': form }, context_instance=RequestContext(request))
def testRecipientFilterMixed(self): form = ComposeForm( {"recipient": "user1,user2", "subject": "S", "body": "B"}, recipient_filter=self.f ) assert not form.is_valid() assert self.user2.username in force_text(form.errors)
def send_message_after_making_name_tag(self): # p = re.compile(r'(^@\w+)') p = re.compile(r'(@\w+)') tag_name_list = re.findall(p, self.content) ori_content = self.content for tag_name in tag_name_list: tag = tag_name.replace('@', '') change_tag = "<a href='#' class='name-tag'>{tag_name}</a>".format( tag_name=tag_name, ) ori_content = ori_content.replace(tag_name, change_tag) user = MyUser.objects.get(nickname=tag) data = { 'recipient': user.username, 'subject': '회원님이 언급되었습니다.', 'body': self.content, } compose_form = ComposeForm(data) sender = MyUser.objects.get(pk=1) if compose_form.is_valid(): compose_form.save(sender=sender) self.content = ori_content return self.content
def testRecipientFiterIsActive(self): form = ComposeForm( {"recipient": "user1", "subject": "S", "body": "B"}, recipient_filter=self.f ) assert form.is_valid() assert self.user1 in form.cleaned_data["recipient"]
def buy_book_register(request, ): """ 사려는 책 등록하기 """ if request.method == 'POST': form = BuyBookRegisterForm(data=request.POST) if form.is_valid(): buy_book = form.save(buyer=request.user) buy_isbn = form.data.get('isbn') book_info = Book.objects.get(isbn=buy_isbn) if SellBookRegister.objects.filter(book_info_id=book_info.pk): data = { 'recipient': request.user.username, 'subject': '안녕하세요!', 'body': '{}님이 구매하시려는 책의 판매 리스트에 존재합니다. 판매 리스트를 확인해보세요 :-)'.format(request.user.username), } compose_form = ComposeForm(data) sender = MyUser.objects.get(pk=1) if compose_form.is_valid(): compose_form.save(sender=sender) news = News.objects.filter(follow_other_id=request.user.id) if news: for other in news: data = { 'recipient': other.my_follow.username, 'subject': '{}님께서 새로운 글을 등록했습니다.'.format(request.user.username, ), 'body': 'test', } compose_form = ComposeForm(data) sender = request.user if compose_form.is_valid(): compose_form.save(sender=sender) return redirect('book:buy_book_detail', buy_pk=buy_book.pk) register_form = BuyBookRegisterForm() search_form = NaverBooksSearchForm() context = { 'register_form': register_form, 'search_form': search_form, } return render(request, 'book/buy_book_register.html', context)
def test_save(self): form = ComposeForm( { 'recipient': self.user2.username, 'subject': 'this is not empty', 'body': 'this is not empty', }, sender=self.user1, ) self.assertTrue(form.is_valid()) massage = form.save() self.assertIsNotNone(massage.pk) self.assertIsNotNone(massage.conversation)
def test_clean_subject(self): form = ComposeForm( { 'recipient': self.user2.username, 'subject': 'X'*123, 'body': 'this is not empty', }, sender=self.user1, ) self.assertTrue(form.is_valid()) subject = form.cleaned_data['subject'] self.assertEquals(120, len(subject))
def contact( request, slug, recipient=None, success_url=None, recipient_filter=None ): row = get_object_or_404(Ad, slug=slug) if request.method == "POST": # sender = request.user form = ComposeForm(request.POST, recipient_filter=recipient_filter) if form.is_valid(): form.save(sender=request.user) messages.info(request, "Message and email successfully sent.") if success_url is None: success_url = reverse("ads:ad_detail", kwargs={"slug": slug}) if "next" in request.GET: success_url = request.GET["next"] return HttpResponseRedirect(success_url) else: form = ComposeForm( initial={"recipient": row.user.username, "subject": row.title} ) if recipient is not None: recipients = [ u for u in User.objects.filter( **{ "%s__in" % get_username_field(): [ r.strip() for r in recipient.split("+") ] } ) ] form.fields["recipient"].initial = recipients context = { "form": form, } return render(request, "ads/contact.html", context)
def contact(request, slug, recipient=None, success_url=None, recipient_filter=None): row = get_object_or_404(Ad, slug=slug) if request.method == "POST": form = ComposeForm(request.POST, recipient_filter=recipient_filter) if form.is_valid(): subject = form.cleaned_data['subject'] message = form.cleaned_data['body'] sender = request.user.email recipient = row.user.email form.save(sender=request.user) send_mail(subject, message, sender, [recipient]) messages.info(request, "Message successfully sent.") if success_url is None: success_url = reverse('ads:ad', kwargs={'slug': slug}) if 'next' in request.GET: success_url = request.GET['next'] return HttpResponseRedirect(success_url) else: form = ComposeForm(initial={ 'recipient': row.user.username, 'subject': row.title }) if recipient is not None: recipients = [ u for u in User.objects.filter( **{ '%s__in' % get_username_field(): [r.strip() for r in recipient.split('+')] }) ] form.fields['recipient'].initial = recipients return render(request, 'ads/contact.html', {'form': form})
def compose(request, recipient): if request.method == "POST": print(request.POST) form = ComposeForm(request.POST) if form.is_valid(): form.save(sender=request.user) messages.info(request, "Message successfully sent.") success_url = reverse('profile') if 'next' in request.GET: success_url = request.GET['next'] return redirect(success_url) else: form = ComposeForm() if recipient is not None: recipients = [ u for u in User.objects.filter(**{ 'username__in': [r.strip() for r in recipient.split('+')] }) ] form.fields['recipient'].initial = recipients return render(request, 'django_messages/compose.html', { 'form': form, })
def create_reply(request, message_id, template_name='django_messages/compose.html', success_url=None, subject_template=_(u"Re: %(subject)s")): """ """ parent = get_object_or_404(Message, id=message_id) if parent.sender != request.user and parent.recipient != request.user: raise Http404 if request.method == "POST": data = { 'recipient': request.POST.get('recipient', ''), 'subject': request.POST.get('subject', ''), 'body': request.POST.get('body', ''), } compose_form = ComposeForm(data) if compose_form.is_valid(): compose_form.save(sender=request.user, parent_msg=parent) messages.info(request, _(u"Message successfully sent.")) if success_url is None: success_url = reverse('messages_inbox') return HttpResponseRedirect(success_url) context = { 'message_id': message_id, 'subject': subject_template % { 'subject': parent.subject }, 'recipient': parent.sender.username, } return render(request, template_name, context)
def test_valid_sender_recipient_transaction(self): """If the recipient blacklisted the sender, the form should not validate and report an error""" blocking = RelationshipStatus.objects.get(from_slug='blocking') relationship = Relationship( from_user=self.user2, to_user=self.user1, status=blocking ) relationship.save() form = ComposeForm( { 'recipient': self.user2.username, 'subject': 'this is not empty', 'body': 'this is not empty', }, sender=self.user1, ) self.assertFalse(form.is_valid()) errors = form.errors['recipient'] self.assertEquals(1, len(errors)) expected_error_message = u"%(recipient)s has blacklisted you, you can't message him any more." expected_error_message = expected_error_message % {'recipient': self.user2} self.assertEquals(expected_error_message, errors[0])
def send_message(request, data, is_registered, source=None): dajax = Dajax() # sender = request.user if is_registered: form = ComposeForm(QueryDict(data)) if form.is_valid(): sender = str(request.user.client) lines = [] lines.append("From: %s" % sender) lines.append("Email: %s" % request.user.email) lines.append("") lines.append("Subject: %s" % form.cleaned_data['subject']) lines.append("") lines.append(form.cleaned_data['body']) message = "\n".join(lines) ctx = { "SITE_NAME": settings.SITE_NAME, "sender": sender, "message": message, "reply_url": absolute_url(reverse('messages_inbox')) } subject = render_to_string("account/emails/send_message_unregistered_subject.txt", ctx) send_hs_mail(subject, "account/emails/send_message_unregistered_body.txt", ctx, settings.DEFAULT_FROM_EMAIL, [form.cleaned_data['recipient'][0].email]) else: qd = QueryDict(data) try: recipient = Healer.objects.get(user__username__iexact=qd['recipient_username']) except Healer.DoesNotExist: return form = ComposeFormUnregistered(qd) form.recipient = recipient.user.email dajax.remove_css_class('#new_message_form input','error') dajax.remove_css_class('#new_message_form textarea','error') if form.is_valid(): m = form.save(sender=request.user) if source: MessageExtra.objects.create(message=m[0], source=source) # request.user.message_set.create( # message=_(u"Message successfully sent.")) # success_url = reverse('messages_inbox') # if request.GET.has_key('next'): # success_url = request.GET['next'] dajax.script("new_message_success();") else: for error in form.errors: if error == "captcha": css_class = '#new_message_form #id_%s_1' else: css_class = '#new_message_form #id_%s' dajax.add_css_class(css_class % error,'error') #update captcha challenge, response = captcha_settings.get_challenge()() store = CaptchaStore.objects.create(challenge=challenge, response=response) dajax.assign('img.captcha', 'src', reverse('captcha-image',kwargs=dict(key=store.hashkey))) dajax.assign('#id_msg_security_verification_0', 'value', store.hashkey) dajax.assign('#id_msg_security_verification_1', 'value', '') return dajax.json() #def new_message_form_processor(request): # # if request.user.is_authenticated(): # new_message_form = ComposeForm() # else: # new_message_form = None # # return { "new_message_form" : new_message_form }
def compose(request, message_id=None, template_name='usuario/mensajes/redactar.html', success_url=None, recipient_filter=None): """ Displays and handles the ``form_class`` form to compose new messages. Required Arguments: None Optional Arguments: ``recipient``: username of a `django.contrib.auth` User, who should receive the message, optionally multiple usernames could be separated by a '+' ``form_class``: the form-class to use ``template_name``: the template to use ``success_url``: where to redirect after successfull submission """ form_errors = '' (tipo_mensaje, expresion) = msj_expresion('alert') mensaje = u'El mensaje será guardado como borrador automáticamente cada 5 minutos' message = None if request.method == "POST": form = ComposeForm(request.POST) cuerpo = '' valido = form.is_valid() # Revisar si hay quien apruebe en el departamento del redactor jefe = Destinatarios.objects.filter(usuarios__user__userprofile__persona__cargo_principal__dependencia = request.user.profile.persona.cargo_principal.dependencia, usuarios__user__userprofile__persona__cargo_principal__cargo = request.user.profile.persona.cargo_principal.dependencia.cargo_max) if not jefe.exists(): mensaje = u'Este memo no puede ser enviado ni aprobado porque no existe un jefe de departamento en %s' %(request.user.profile.persona.cargo_principal.dependencia) valido = False else: jefe = jefe[0] if valido: if request.POST.has_key('recipient'): destinatarios = form.cleaned_data['recipient'] destinos = [] for dest in destinatarios: if dest.usuarios == None: destinatarios2 = Destinatarios.objects.filter(usuarios__persona__cargo_principal__cargo=dest.grupos) for dest2 in destinatarios2: if not dest2 in form.cleaned_data['recipient']: destinos.append(dest2) else: destinos.append(dest) destinatarios = destinos else: destinatarios = None if request.POST.has_key('con_copia'): con_copia = form.cleaned_data['con_copia'] else: con_copia = None if request.POST.has_key('archivo'): archivo = request.POST['archivo'] else: archivo = None sender = Destinatarios.objects.get(usuarios__user=request.user) # Revisar si se envió el formulario como borrador borrador = False enviar = False plantilla = False if request.POST.has_key('borrador'): borrador = True if request.POST.has_key('enviar'): enviar = True if request.POST.has_key('plantilla'): plantilla = True if enviar: mensaje = u'Mensaje enviado exitosamente' elif borrador: mensaje = u'Borrador guardado exitosamente' elif plantilla: print "Aún no programado" mensaje = u'Plantilla guardada exitosamente' # Por cada destinatario, enviar el memo, generar un log y enviar correo si está en la opción de envío if message_id: msjs_guardados = Message.objects.get(id=message_id) body = request.POST['body'] subject = request.POST['subject'] num_ident = msjs_guardados.num_ident codigo = msjs_guardados.codigo # Enlazar los destinatarios con los con_copia destinos = [] if destinatarios: for dest in destinatarios: destinos.append(dest) if con_copia: for dest_cc in con_copia: destinos.append(dest_cc) ''' if not destinatarios or not con_copia: message = Message.objects.get(id=message_id) message.body = body message.subject = subject message.archivo = archivo message.borrador = borrador message.save() ''' msjs_guardados = Message.objects.filter(codigo=codigo) for dest in destinos: # Si el destinatario no está en el campo 'recipient', entonces está en 'con_copia' if not dest in destinatarios: cc = True else: cc = False # Si con ese codigo, están los mismos destinatarios, entonces se guarda la información if msjs_guardados.filter(recipient=dest).exists(): message = Message.objects.get(recipient=dest, codigo=codigo) message.recipient = dest message.body = body message.subject = subject message.archivo = archivo message.borrador = borrador message.con_copia = cc message.save() # Si no existe, se crea else: message = crear_mensaje( destino=dest, envio=sender, asunto=subject, cc=cc, cuerpo=body, num_ident=msjs_guardados[0].num_ident, codigo=msjs_guardados[0].codigo, borrador=borrador, archivo = archivo, ) # Eliminar memos cuyos destinatarios hayan sido excluidos if destinos: msjs_guardados = msjs_guardados.exclude(recipient__in=destinos) if msjs_guardados.exists(): msjs_guardados.delete() else: fecha_actual = datetime.datetime.today() mensajes = Message.objects.filter(sender__usuarios__user__userprofile__persona__cargo_principal__dependencia=sender.usuarios.user.profile.persona.cargo_principal.dependencia, sent_at__year=fecha_actual.year, sent_at__month=fecha_actual.month) num_ident = mensajes.count() + 1 # El identificador se genera a partir del id del memo, del jefe de departamento y del minuto, segundo y microsegundo actual identificador = '%s%s' %(Message.objects.all().count(), jefe.id) codigo = '' for ident in identificador: codigo = codigo + str(ord(ident)) codigo = codigo + str(datetime.datetime.today().microsecond) if destinatarios: for destino in destinatarios: message = crear_mensaje( destino=destino, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=False, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) elif con_copia: for destino_cc in con_copia: message = crear_mensaje( destino=destino_cc, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=True, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) else: message = crear_mensaje( destino=None, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=False, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) # ¿Necesita el jefe recibir directamente el memorándum? ''' if enviar and not destinatarios.__contains__(jefe): destino = jefe, message = crear_mensaje( destino=destino, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=False, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) ''' (tipo_mensaje, expresion) = msj_expresion('success') if success_url is None: success_url = reverse('messages_inbox') if request.GET.has_key('next'): success_url = request.GET['next'] form.body = request.POST['body'] if form.errors or not valido: (tipo_mensaje, expresion) = msj_expresion('error') label = "" if form.errors.keys()[0] == 'subject': label = "Asunto" elif form.errors.keys()[0] == 'recipient': label = "Destinatarios" elif form.errors.keys()[0] == 'body': label = "Texto" if not label == "": mensaje = label + ': ' + form.errors.values()[0][0] if form.errors.has_key('__all__'): mensaje = form.errors['__all__'].as_text().split('* ')[1] if form.errors or not valido: return render_to_response(template_name, { 'tipo': 'Redactar', 'tipo_mensaje':tipo_mensaje, 'mensaje':mensaje, 'message':message, 'expresion':expresion, 'request': request, 'form': form, }, context_instance=RequestContext(request)) elif request.POST.has_key('borrador'): return HttpResponseRedirect('/redactar/%s/' %(message.id)) return bandeja(request, tipo_bandeja='enviados', expresion=expresion, tipo_mensaje=tipo_mensaje, mensaje=mensaje) else: form = ComposeForm() if message_id: message = Message.objects.get(id=message_id) if message.status.nombre == 'Aprobado': (tipo_mensaje, expresion) = msj_expresion('error') mensaje = u'Ese mensaje ya ha sido aprobado. No puede ser editado' return bandeja(request, tipo_bandeja='enviados', expresion=expresion, tipo_mensaje=tipo_mensaje, mensaje=mensaje) messages = Message.objects.filter(codigo=message.codigo) messages_cc = messages.filter(con_copia=True) messages = messages.filter(con_copia=False) dest_cc = [] dest = [] if messages_cc.exists(): for msj in messages_cc: dest_cc.append(msj.recipient) if messages.exists(): for msj in messages: dest.append(msj.recipient) form.fields['recipient'].initial = dest form.fields['body'].initial = message.body form.fields['con_copia'].initial = dest_cc form.fields['subject'].initial = message.subject form.fields['archivo'].initial = message.archivo else: persona = u"%s.</br /> %s de %s" %(request.user.profile.persona, request.user.profile.persona.cargo_principal.cargo, request.user.profile.persona.cargo_principal.dependencia) form.fields['body'].initial = u"<br /><br />Sin otro particular al cual hacer referencia, se despide. </br /></br /><b>Atentamente,</br /> %s</b>" %(persona.upper()) return render_to_response(template_name, { 'tipo': 'Redactar', 'tipo_mensaje':tipo_mensaje, 'mensaje':mensaje, 'message':message, 'expresion':expresion, 'request': request, 'form': form, }, context_instance=RequestContext(request))
def compose(request, message_id=None, template_name='usuario/mensajes/redactar.html', success_url=None, recipient_filter=None): """ Displays and handles the ``form_class`` form to compose new messages. Required Arguments: None Optional Arguments: ``recipient``: username of a `django.contrib.auth` User, who should receive the message, optionally multiple usernames could be separated by a '+' ``form_class``: the form-class to use ``template_name``: the template to use ``success_url``: where to redirect after successfull submission """ form_errors = '' (tipo_mensaje, expresion) = msj_expresion('alert') mensaje = u'El mensaje será guardado como borrador automáticamente cada 5 minutos' message = None if request.method == "POST": form = ComposeForm(request.POST) cuerpo = '' valido = form.is_valid() # Revisar si hay quien apruebe en el departamento del redactor jefe = Destinatarios.objects.filter( usuarios__user__userprofile__persona__cargo_principal__dependencia= request.user.profile.persona.cargo_principal.dependencia, usuarios__user__userprofile__persona__cargo_principal__cargo=request .user.profile.persona.cargo_principal.dependencia.cargo_max) if not jefe.exists(): mensaje = u'Este memo no puede ser enviado ni aprobado porque no existe un jefe de departamento en %s' % ( request.user.profile.persona.cargo_principal.dependencia) valido = False else: jefe = jefe[0] if valido: if request.POST.has_key('recipient'): destinatarios = form.cleaned_data['recipient'] destinos = [] for dest in destinatarios: if dest.usuarios == None: destinatarios2 = Destinatarios.objects.filter( usuarios__persona__cargo_principal__cargo=dest. grupos) for dest2 in destinatarios2: if not dest2 in form.cleaned_data['recipient']: destinos.append(dest2) else: destinos.append(dest) destinatarios = destinos else: destinatarios = None if request.POST.has_key('con_copia'): con_copia = form.cleaned_data['con_copia'] else: con_copia = None if request.POST.has_key('archivo'): archivo = request.POST['archivo'] else: archivo = None sender = Destinatarios.objects.get(usuarios__user=request.user) # Revisar si se envió el formulario como borrador borrador = False enviar = False plantilla = False if request.POST.has_key('borrador'): borrador = True if request.POST.has_key('enviar'): enviar = True if request.POST.has_key('plantilla'): plantilla = True if enviar: mensaje = u'Mensaje enviado exitosamente' elif borrador: mensaje = u'Borrador guardado exitosamente' elif plantilla: print "Aún no programado" mensaje = u'Plantilla guardada exitosamente' # Por cada destinatario, enviar el memo, generar un log y enviar correo si está en la opción de envío if message_id: msjs_guardados = Message.objects.get(id=message_id) body = request.POST['body'] subject = request.POST['subject'] num_ident = msjs_guardados.num_ident codigo = msjs_guardados.codigo # Enlazar los destinatarios con los con_copia destinos = [] if destinatarios: for dest in destinatarios: destinos.append(dest) if con_copia: for dest_cc in con_copia: destinos.append(dest_cc) ''' if not destinatarios or not con_copia: message = Message.objects.get(id=message_id) message.body = body message.subject = subject message.archivo = archivo message.borrador = borrador message.save() ''' msjs_guardados = Message.objects.filter(codigo=codigo) for dest in destinos: # Si el destinatario no está en el campo 'recipient', entonces está en 'con_copia' if not dest in destinatarios: cc = True else: cc = False # Si con ese codigo, están los mismos destinatarios, entonces se guarda la información if msjs_guardados.filter(recipient=dest).exists(): message = Message.objects.get(recipient=dest, codigo=codigo) message.recipient = dest message.body = body message.subject = subject message.archivo = archivo message.borrador = borrador message.con_copia = cc message.save() # Si no existe, se crea else: message = crear_mensaje( destino=dest, envio=sender, asunto=subject, cc=cc, cuerpo=body, num_ident=msjs_guardados[0].num_ident, codigo=msjs_guardados[0].codigo, borrador=borrador, archivo=archivo, ) # Eliminar memos cuyos destinatarios hayan sido excluidos if destinos: msjs_guardados = msjs_guardados.exclude( recipient__in=destinos) if msjs_guardados.exists(): msjs_guardados.delete() else: fecha_actual = datetime.datetime.today() mensajes = Message.objects.filter( sender__usuarios__user__userprofile__persona__cargo_principal__dependencia =sender.usuarios.user.profile.persona.cargo_principal. dependencia, sent_at__year=fecha_actual.year, sent_at__month=fecha_actual.month) num_ident = mensajes.count() + 1 # El identificador se genera a partir del id del memo, del jefe de departamento y del minuto, segundo y microsegundo actual identificador = '%s%s' % (Message.objects.all().count(), jefe.id) codigo = '' for ident in identificador: codigo = codigo + str(ord(ident)) codigo = codigo + str(datetime.datetime.today().microsecond) if destinatarios: for destino in destinatarios: message = crear_mensaje( destino=destino, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=False, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) elif con_copia: for destino_cc in con_copia: message = crear_mensaje( destino=destino_cc, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=True, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) else: message = crear_mensaje( destino=None, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=False, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) # ¿Necesita el jefe recibir directamente el memorándum? ''' if enviar and not destinatarios.__contains__(jefe): destino = jefe, message = crear_mensaje( destino=destino, envio=sender, asunto=request.POST['subject'], cuerpo=request.POST['body'], cc=False, num_ident=num_ident, codigo=codigo, borrador=borrador, archivo=archivo, ) ''' (tipo_mensaje, expresion) = msj_expresion('success') if success_url is None: success_url = reverse('messages_inbox') if request.GET.has_key('next'): success_url = request.GET['next'] form.body = request.POST['body'] if form.errors or not valido: (tipo_mensaje, expresion) = msj_expresion('error') label = "" if form.errors.keys()[0] == 'subject': label = "Asunto" elif form.errors.keys()[0] == 'recipient': label = "Destinatarios" elif form.errors.keys()[0] == 'body': label = "Texto" if not label == "": mensaje = label + ': ' + form.errors.values()[0][0] if form.errors.has_key('__all__'): mensaje = form.errors['__all__'].as_text().split('* ')[1] if form.errors or not valido: return render_to_response(template_name, { 'tipo': 'Redactar', 'tipo_mensaje': tipo_mensaje, 'mensaje': mensaje, 'message': message, 'expresion': expresion, 'request': request, 'form': form, }, context_instance=RequestContext(request)) elif request.POST.has_key('borrador'): return HttpResponseRedirect('/redactar/%s/' % (message.id)) return bandeja(request, tipo_bandeja='enviados', expresion=expresion, tipo_mensaje=tipo_mensaje, mensaje=mensaje) else: form = ComposeForm() if message_id: message = Message.objects.get(id=message_id) if message.status.nombre == 'Aprobado': (tipo_mensaje, expresion) = msj_expresion('error') mensaje = u'Ese mensaje ya ha sido aprobado. No puede ser editado' return bandeja(request, tipo_bandeja='enviados', expresion=expresion, tipo_mensaje=tipo_mensaje, mensaje=mensaje) messages = Message.objects.filter(codigo=message.codigo) messages_cc = messages.filter(con_copia=True) messages = messages.filter(con_copia=False) dest_cc = [] dest = [] if messages_cc.exists(): for msj in messages_cc: dest_cc.append(msj.recipient) if messages.exists(): for msj in messages: dest.append(msj.recipient) form.fields['recipient'].initial = dest form.fields['body'].initial = message.body form.fields['con_copia'].initial = dest_cc form.fields['subject'].initial = message.subject form.fields['archivo'].initial = message.archivo else: persona = u"%s.</br /> %s de %s" % ( request.user.profile.persona, request.user.profile.persona.cargo_principal.cargo, request.user.profile.persona.cargo_principal.dependencia) form.fields[ 'body'].initial = u"<br /><br />Sin otro particular al cual hacer referencia, se despide. </br /></br /><b>Atentamente,</br /> %s</b>" % ( persona.upper()) return render_to_response(template_name, { 'tipo': 'Redactar', 'tipo_mensaje': tipo_mensaje, 'mensaje': mensaje, 'message': message, 'expresion': expresion, 'request': request, 'form': form, }, context_instance=RequestContext(request))
def post(self, request, format=None): try: data = request.POST['data'].encode('utf-8') source = request.POST.get('source', None) except: return HttpResponseBadRequest() if request.user.is_authenticated(): form = ComposeForm(QueryDict(data)) if form.is_valid(): sender = str(request.user.client) lines = [] lines.append("From: %s" % sender) lines.append("Email: %s" % request.user.email) lines.append("") lines.append("Subject: %s" % form.cleaned_data['subject']) lines.append("") lines.append(form.cleaned_data['body']) message = "\n".join(lines) ctx = { "SITE_NAME": settings.SITE_NAME, "sender": sender, "message": message, "reply_url": absolute_url(reverse('messages_inbox')) } subject = render_to_string("account/emails/send_message_unregistered_subject.txt", ctx) send_hs_mail(subject, "account/emails/send_message_unregistered_body.txt", ctx, settings.DEFAULT_FROM_EMAIL, [form.cleaned_data['recipient'][0].email]) else: qd = QueryDict(data) try: recipient = Healer.objects.get(user__username__iexact=qd['recipient_username']) except Healer.DoesNotExist: return form = ComposeFormUnregistered(qd) form.recipient = recipient.user.email if form.is_valid(): m = form.save(sender=request.user) if source: MessageExtra.objects.create(message=m[0], source=source) # request.user.message_set.create( # message=_(u"Message successfully sent.")) # success_url = reverse('messages_inbox') # if request.GET.has_key('next'): # success_url = request.GET['next'] #update captcha challenge, captcha_response = captcha_settings.get_challenge()() store = CaptchaStore.objects.create(challenge=challenge, response=captcha_response) errors, error_elements, _ = get_errors(form) return Response({'errors': errors, 'error_elements': error_elements, 'captcha': { 'img': reverse('captcha-image', kwargs=dict(key=store.hashkey)), 'code': store.hashkey}})