Exemplo n.º 1
0
def listmailbox(request, defmailbox="INBOX", update_session=True):
    """Mailbox content listing

    Return a list of messages contained in the specified mailbox. The
    number of elements returned depends on the ``MESSAGES_PER_PAGE``
    parameter. (user preferences)

    :param request: a ``Request`` object
    :param defmailbox: the default mailbox (when not present inside request arguments)
    :return: a dictionnary
    """
    mbox = request.GET.get("mbox", defmailbox)
    if update_session:
        set_nav_params(request)
        request.session["mbox"] = mbox

    lst = ImapListing(request.user,
                      request.session["password"],
                      baseurl="?action=listmailbox&mbox=%s&" % mbox,
                      folder=mbox,
                      elems_per_page=int(
                          parameters.get_user(request.user,
                                              "MESSAGES_PER_PAGE")),
                      **request.session["navparams"])
    return lst.render(request, request.session["pageid"])
Exemplo n.º 2
0
def listmailbox(request, defmailbox="INBOX", update_session=True):
    """Mailbox content listing

    Return a list of messages contained in the specified mailbox. The
    number of elements returned depends on the ``MESSAGES_PER_PAGE``
    parameter. (user preferences)

    :param request: a ``Request`` object
    :param defmailbox: the default mailbox (when not present inside request arguments)
    :return: a dictionnary
    """
    mbox = request.GET.get("mbox", defmailbox)
    if update_session:
        set_nav_params(request)
        request.session["mbox"] = mbox

    lst = ImapListing(request.user, request.session["password"],
                      baseurl="?action=listmailbox&mbox=%s&" % mbox,
                      folder=mbox,
                      elems_per_page=int(parameters.get_user(request.user, "MESSAGES_PER_PAGE")),
                      **request.session["navparams"])
    return lst.render(request, request.session["pageid"])
Exemplo n.º 3
0
def index(request):
    """Webmail actions handler

    Problèmes liés à la navigation 'anchor based'
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    Lors d'un rafraichissemt complet, une première requête est envoyée
    vers /webmail/. On ne connait pas encore l'action qui va être
    demandée mais on peut déjà envoyer des informations indépendantes
    (comme les dossiers, le quota).

    Si on se contente de cela, l'affichage donnera un aspect décomposé
    qui n'est pas très séduisant (à cause de la latence notamment). Il
    faudrait pouvoir envoyer le menu par la même occasion, le souci
    étant de savoir lequel...

    Une solution possible : il suffirait de déplacer le menu vers la
    droite pour l'aligner avec le contenu, remonter la liste des
    dossiers (même hauteur que le menu) et renvoyer le menu en même
    temps que le contenu. Le rendu sera plus uniforme je pense.

    """
    action = request.GET.get("action", None)

    if action is not None:
        if not globals().has_key(action):
            raise WebmailError(_("Undefined action"))
        response = globals()[action](request)
    else:
        if request.is_ajax():
            raise WebmailError(_("Bad request"))
        response = dict(selection="webmail")

    curmbox = request.session.get("mbox", "INBOX")
    if not request.is_ajax():
        request.session["lastaction"] = None
        imapc = get_imapconnector(request)
        response["hdelimiter"] = imapc.hdelimiter
        response["mboxes"] = render_mboxes_list(request, imapc)
        imapc.getquota(curmbox)
        response["refreshrate"] = \
            int(parameters.get_user(request.user, "REFRESH_INTERVAL"))
        response["quota"] = ImapListing.computequota(imapc)
        trash = parameters.get_user(request.user, "TRASH_FOLDER")
        response["trash"] = trash
        response["ro_mboxes"] = [
            "INBOX", "Junk",
            parameters.get_user(request.user, "SENT_FOLDER"),
            trash,
            parameters.get_user(request.user, "DRAFTS_FOLDER")
        ]
        return _render(request, "webmail/index.html", response)

    if action in ["reply", "forward"]:
        action = "compose"
    if request.session["lastaction"] != action:
        extra_args = {}
        if response.has_key("menuargs"):
            extra_args = response["menuargs"]
            del response["menuargs"]
        try:
            response["menu"] = \
                getattr(webextras, "%s_menu" % action)("", curmbox, request.user, **extra_args)
        except KeyError:
            pass

    response.update(callback=action)
    if not response.has_key("status"):
        response.update(status="ok")
    return ajax_simple_response(response)
Exemplo n.º 4
0
def index(request):
    """Webmail actions handler

    Problèmes liés à la navigation 'anchor based'
    ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

    Lors d'un rafraichissemt complet, une première requête est envoyée
    vers /webmail/. On ne connait pas encore l'action qui va être
    demandée mais on peut déjà envoyer des informations indépendantes
    (comme les dossiers, le quota).

    Si on se contente de cela, l'affichage donnera un aspect décomposé
    qui n'est pas très séduisant (à cause de la latence notamment). Il
    faudrait pouvoir envoyer le menu par la même occasion, le souci
    étant de savoir lequel...

    Une solution possible : il suffirait de déplacer le menu vers la
    droite pour l'aligner avec le contenu, remonter la liste des
    dossiers (même hauteur que le menu) et renvoyer le menu en même
    temps que le contenu. Le rendu sera plus uniforme je pense.

    """
    action = request.GET.get("action", None)

    if action is not None:
        if not globals().has_key(action):
            raise WebmailError(_("Undefined action"))
        response = globals()[action](request)
    else:
        if request.is_ajax():
            raise WebmailError(_("Bad request"))
        response = dict(selection="webmail")

    curmbox = request.session.get("mbox", "INBOX")
    if not request.is_ajax():
        request.session["lastaction"] = None
        imapc = get_imapconnector(request)
        response["mboxes"] = render_mboxes_list(request, imapc)
        imapc.getquota(curmbox)
        response["refreshrate"] = \
            int(parameters.get_user(request.user, "REFRESH_INTERVAL"))
        response["quota"] = ImapListing.computequota(imapc)
        response["ro_mboxes"] = [
            "INBOX", "Junk",
            parameters.get_user(request.user, "SENT_FOLDER"),
            parameters.get_user(request.user, "TRASH_FOLDER"),
            parameters.get_user(request.user, "DRAFTS_FOLDER")
        ]

        return _render(request, "webmail/index.html", response)

    if action in ["reply", "forward"]:
        action = "compose"
    if request.session["lastaction"] != action:
        extra_args = {}
        if response.has_key("menuargs"):
            extra_args = response["menuargs"]
            del response["menuargs"]
        try:
            response["menu"] = \
                getattr(webextras, "%s_menu" % action)("", curmbox, request.user, **extra_args)
        except KeyError:
            pass

    response.update(callback=action)
    if not response.has_key("status"):
        response.update(status="ok")
    return ajax_simple_response(response)