Beispiel #1
0
        """
        Return the link to the user's twitter account.
        """
        return 'https://twitter.com/%s' % urlquote_plus(self.twitter_name)


def _redo_profile_text_rendering(sender, **kwargs):
    """
    Redo text rendering of all user profiles.
    :param sender: Not used.
    :param kwargs: Not used.
    """
    for profile in UserProfile.objects.all():
        profile.render_text(save=True)

render_engine_changed.connect(_redo_profile_text_rendering)


def set_preferred_language_and_timezone(user, request):
    """
    Set the preferred language and timezone of the current user session.
    :param user: The currently logged-in user.
    :param request: The current request instance.
    """
    user_profile = user.user_profile

    # Activate timezone for the current thread, and store value for any future requests
    user_timezone = user_profile.timezone
    timezone.activate(user_timezone)
    request.session[TIMEZONE_SESSION_KEY] = user_timezone.zone
Beispiel #2
0
                                                        allow_quotes=True,
                                                        allow_footnotes=True,
                                                        allow_acronyms=True,
                                                        allow_links=True,
                                                        allow_medias=True,
                                                        allow_cdm_extra=True,
                                                        force_nofollow=False,
                                                        render_text_version=True,
                                                        merge_footnotes_html=True,
                                                        merge_footnotes_text=True)
        self.description_html = content_html
        self.description_text = content_text

        # Save if required
        if save:
            # Avoid infinite loop by calling directly super.save
            super(License, self).save(update_fields=('description_html', 'description_text'))


def _redo_licenses_text_rendering(sender, **kwargs):
    """
    Redo text rendering of all licenses.
    :param sender: Not used.
    :param kwargs: Not used.
    """
    for license in License.objects.all():
        license.render_description(save=True)


render_engine_changed.connect(_redo_licenses_text_rendering)
Beispiel #3
0
        # Save if required
        if save:
            # Avoid infinite loop by calling directly super.save
            super(Forum, self).save(update_fields=('description_html', 'description_text'))


def _redo_forum_text_rendering(sender, **kwargs):
    """
    Redo text rendering of all forums.
    :param sender: Not used.
    :param kwargs: Not used.
    """
    for forum in Forum.objects.all():
        forum.render_description(save=True)

render_engine_changed.connect(_redo_forum_text_rendering)


def update_child_forum_slug_hierarchy_on_parent_save(sender, instance, created, raw, using, update_fields, **kwargs):
    """
    Update any child forum's slug hierarchy on parent save.
    :param sender: The Forum class.
    :param instance: The forum instance.
    :param created: True if the instance just been created.
    :param raw: True if the instance is saved as-is and should not be used.
    :param using: The database alias.
    :param update_fields: Not used.
    :param kwargs: Any extra keywords arguments.
    :return: None
    """
Beispiel #4
0
        # Save if required
        if save:
            self.save_no_rendering(update_fields=('content_html', 'content_text'))


def _redo_announcements_text_rendering(sender, **kwargs):
    """
    Redo text rendering of all announcements.
    :param sender: Not used.
    :param kwargs: Not used.
    """
    for announcement in Announcement.objects.all():
        announcement.render_text(save=True)

render_engine_changed.connect(_redo_announcements_text_rendering)


class AnnouncementTag(models.Model):
    """
    Announcement tag data model.
    An announcement's tag is made of:
    - a slug (unique and indexed in database),
    - a name (human readable).
    """

    # FIXME AutoSlugField
    slug = models.SlugField(_('Slug'),
                            max_length=255,
                            unique=True)
Beispiel #5
0
        # Save if required
        if save:
            # Avoid infinite loop by calling directly super.save
            super(IssueTicket, self).save(update_fields=('description_html', 'description_text'))


def _redo_tickets_description_rendering(sender, **kwargs):
    """
    Redo text rendering of all issue tickets.
    :param sender: Not used.
    :param kwargs: Not used.
    """
    for ticket in IssueTicket.objects.all():
        ticket.render_description(save=True)

render_engine_changed.connect(_redo_tickets_description_rendering)


class IssueComment(models.Model):
    """
    Bug issue ticket's comment model (also called "issue update" by some developers).
    An issue comment is made of:
    - a related issue, related comments of an issue are available in the IssueTicket model using ``comments``.
    - an author, submitted ticket's comments are available in the User model using ``issues_comments``.
    - a publication date,
    - and finally the comment text.
    """

    issue = models.ForeignKey(IssueTicket,
                              db_index=True,  # Database optimization
                              editable=False,
Beispiel #6
0
                                                        allow_text_colors=True,
                                                        allow_spoilers=True,
                                                        allow_lists=True,
                                                        allow_tables=True,
                                                        allow_quotes=True,
                                                        allow_acronyms=True,
                                                        allow_links=True,
                                                        allow_medias=True,
                                                        allow_cdm_extra=True,
                                                        force_nofollow=False,
                                                        render_text_version=True)
        self.description_html = content_html
        self.description_text = content_text

        # Save if required
        if save:
            # Avoid infinite loop by calling directly super.save
            super(ImageAttachment, self).save(update_fields=('description_html', 'description_text'))


def _redo_image_attachments_text_rendering(sender, **kwargs):
    """
    Redo text rendering of all image attachments.
    :param sender: Not used.
    :param kwargs: Not used.
    """
    for image in ImageAttachment.objects.all():
        image.render_description(save=True)

render_engine_changed.connect(_redo_image_attachments_text_rendering)
Beispiel #7
0
        # Save if required
        if save:
            # Avoid infinite loop by calling directly super.save
            super(PrivateMessage, self).save(update_fields=('body_html', 'body_text'))


def _redo_private_messages_text_rendering(sender, **kwargs):
    """
    Redo text rendering of all private messages.
    :param sender: Not used.
    :param kwargs: Not used.
    """
    for message in PrivateMessage.objects.all():
        message.render_body(save=True)

render_engine_changed.connect(_redo_private_messages_text_rendering)


def notice_unread_messages_upon_login(sender, user, request, **kwargs):
    """
    Add an INFO flash message upon user login if the user has unread messages.
    :param sender: Not used.
    :param user: The logged-in user.
    :param request: The current request.
    :param kwargs: Not used.
    :return: None
    """
    unread_count = PrivateMessage.objects.inbox_count_for(user)
    if unread_count > 0:
        messages.add_message(request, messages.INFO, mark_safe(
            _('You have %(count)d unread private messages '