def handle(self, *args, **kwargs): if len(args) != 2: raise CommandError("Enter action {add|del} and username") action, username = args assert action in ('add', 'del') user = compat.get_user_model().objects.get(**{compat.get_username_field(): username}) forums = Forum.objects.all() for forum in forums: forum.moderators.remove(user) if action == 'add': forum.moderators.add(user)
def handle(self, *args, **kwargs): if len(args) != 2: raise CommandError("Enter action {add|del} and username") action, username = args assert action in ('add', 'del') user = compat.get_user_model().objects.get( **{compat.get_username_field(): username}) forums = Forum.objects.all() for forum in forums: forum.moderators.remove(user) if action == 'add': forum.moderators.add(user)
def get_pybb_profile(user): from pybb import defaults if not user.is_authenticated(): if defaults.PYBB_ENABLE_ANONYMOUS_POST: user = get_user_model().objects.get(**{get_username_field(): defaults.PYBB_ANONYMOUS_USERNAME}) else: raise ValueError(_('Can\'t get profile for anonymous user')) if defaults.PYBB_PROFILE_RELATED_NAME: return getattr(user, defaults.PYBB_PROFILE_RELATED_NAME) else: return user
def send_notification(users, template, context=None): context = context or {} if not 'site' in context: context['site'] = Site.objects.get_current() old_lang = translation.get_language() from_email = settings.DEFAULT_FROM_EMAIL mails = [] for user in users: if not getattr(util.get_pybb_profile(user), 'receive_emails', True): continue try: validate_email(user.email) except: # Invalid email continue if user.email == '*****@*****.**' % getattr( user, compat.get_username_field()): continue context['user'] = user lang = util.get_pybb_profile(user).language or settings.LANGUAGE_CODE translation.activate(lang) subject = render_to_string( 'pybb/mail_templates/%s_subject.html' % template, context) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) context['subject'] = subject txt_message = render_to_string( 'pybb/mail_templates/%s_body.html' % template, context) try: html_message = render_to_string( 'pybb/mail_templates/%s_body-html.html' % template, context) except TemplateDoesNotExist as e: mails.append((subject, txt_message, from_email, [user.email])) else: mails.append( (subject, txt_message, from_email, [user.email], html_message)) # Send mails send_mass_html_mail(mails, fail_silently=True) # Reactivate previous language translation.activate(old_lang)
def notify_topic_subscribers(post): topic = post.topic if post != topic.head: old_lang = translation.get_language() # Define constants for templates rendering delete_url = reverse('pybb:delete_subscription', args=[post.topic.id]) current_site = Site.objects.get_current() from_email = settings.DEFAULT_FROM_EMAIL subject = render_to_string( 'pybb/mail_templates/subscription_email_subject.html', { 'site': current_site, 'post': post }) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) mails = tuple() for user in topic.subscribers.exclude(pk=post.user.pk): try: validate_email(user.email) except: # Invalid email continue if user.email == '*****@*****.**' % getattr( user, compat.get_username_field()): continue lang = util.get_pybb_profile( user).language or settings.LANGUAGE_CODE translation.activate(lang) message = render_to_string( 'pybb/mail_templates/subscription_email_body.html', { 'site': current_site, 'post': post, 'delete_url': delete_url, 'user': user }) mails += ((subject, message, from_email, [user.email]), ) # Send mails send_mass_mail(mails, fail_silently=True) # Reactivate previous language translation.activate(old_lang)
def send_notification(users, template, context=None): context = context or {} if not 'site' in context: context['site'] = Site.objects.get_current() old_lang = translation.get_language() from_email = settings.DEFAULT_FROM_EMAIL mails = [] for user in users: if not getattr(util.get_pybb_profile(user), 'receive_emails', True): continue try: validate_email(user.email) except: # Invalid email continue if user.email == '*****@*****.**' % getattr(user, compat.get_username_field()): continue context['user'] = user lang = util.get_pybb_profile(user).language or settings.LANGUAGE_CODE translation.activate(lang) subject = render_to_string('pybb/mail_templates/%s_subject.html' % template, context) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) context['subject'] = subject txt_message = render_to_string('pybb/mail_templates/%s_body.html' % template, context) try: html_message = render_to_string('pybb/mail_templates/%s_body-html.html' % template, context) except TemplateDoesNotExist as e: mails.append((subject, txt_message, from_email, [user.email])) else: mails.append((subject, txt_message, from_email, [user.email], html_message)) # Send mails send_mass_html_mail(mails, fail_silently=True) # Reactivate previous language translation.activate(old_lang)
def notify_topic_subscribers(post): topic = post.topic if post != topic.head: old_lang = translation.get_language() # Define constants for templates rendering delete_url = reverse('pybb:delete_subscription', args=[post.topic.id]) current_site = Site.objects.get_current() from_email = settings.DEFAULT_FROM_EMAIL subject = render_to_string('pybb/mail_templates/subscription_email_subject.html', {'site': current_site, 'post': post}) # Email subject *must not* contain newlines subject = ''.join(subject.splitlines()) mails = tuple() for user in topic.subscribers.exclude(pk=post.user.pk): try: validate_email(user.email) except: # Invalid email continue if user.email == '*****@*****.**' % getattr(user, compat.get_username_field()): continue lang = util.get_pybb_profile(user).language or settings.LANGUAGE_CODE translation.activate(lang) message = render_to_string('pybb/mail_templates/subscription_email_body.html', {'site': current_site, 'post': post, 'delete_url': delete_url, 'user': user}) mails += ((subject, message, from_email, [user.email]),) # Send mails send_mass_mail(mails, fail_silently=True) # Reactivate previous language translation.activate(old_lang)
from __future__ import unicode_literals import re import inspect from django import forms from django.core.exceptions import FieldError from django.forms.models import inlineformset_factory, BaseInlineFormSet from django.utils.translation import ugettext, ugettext_lazy from django.utils.timezone import now as tznow from pybb import compat, defaults, util from pybb.models import Topic, Post, Attachment, PollAnswer User = compat.get_user_model() username_field = compat.get_username_field() class AttachmentForm(forms.ModelForm): class Meta(object): model = Attachment fields = ('file', ) def clean_file(self): if self.cleaned_data['file'].size > defaults.PYBB_ATTACHMENT_SIZE_LIMIT: raise forms.ValidationError(ugettext('Attachment is too big')) return self.cleaned_data['file'] AttachmentFormSet = inlineformset_factory(Post, Attachment, extra=1, form=AttachmentForm)
def get_absolute_url(self): return reverse( 'pybb:user', kwargs={'username': getattr(self.user, get_username_field())})
def get_absolute_url(self): return reverse('pybb:user', kwargs={'username': getattr(self.user, get_username_field())})
def get_absolute_url(self): return reverse("pybb:user", kwargs={"username": getattr(self.user, get_username_field())})
def get_results(self, request, term, page, context): username_field = get_username_field() lookup = {'user__{}__icontains'.format(username_field): term} results = get_pybb_profile_model().objects.filter(**lookup)\ .values_list('user__id', 'user__{}'.format(username_field)) return ('nil', False, results)