def show_folders_view(request): '''Show the account folders. ''' # Login to the server: M = serverLogin(request) # Special folders # TODO: will get this from the user config M.set_special_folders('INBOX', 'INBOX.Drafts', 'INBOX.Templates') # Expandable folders expand_folders = request.user.folderstoexpand_set.all() if expand_folders: M.set_expand_list(*[f.folder_name for f in expand_folders]) # Read the subscribed folder list: M.refresh_folders(subscribed=True) # Get the default identity config = WebpymailConfig(request) identity_list = config.identities() default_address = identity_list[0]['mail_address'] return render_to_response('mail/folder_list.html', { 'server': M, 'address': default_address }, context_instance=RequestContext(request))
def __init__(self, *args, **kwargs): request = kwargs.pop('request') super(ComposeMailForm, self).__init__(*args, **kwargs) # Populate the identity choices config = WebpymailConfig(request) identity_list = config.identities() from_list = [] for identity in identity_list: if identity['user_name'] and identity['mail_address']: addr = '"%s" <%s>' % (identity['user_name'], identity['mail_address']) elif identity['mail_address']: addr = '<%s>' % identity['mail_address'] else: continue from_list.append((addr, addr)) if not from_list: addr = '<%s@%s>' % (request.session['username'], request.session['host']) from_list = [(addr, addr)] self.fields['from_addr'].choices = from_list
def __init__(self, *args, **kwargs): request = kwargs.pop('request') super(ComposeMailForm, self).__init__(*args, **kwargs) # Populate the identity choices config = WebpymailConfig( request ) identity_list = config.identities() from_list = [] for identity in identity_list: if identity['user_name'] and identity['mail_address']: addr = '"%s" <%s>' % (identity['user_name'], identity['mail_address'] ) elif identity['mail_address']: addr = '<%s>' % identity['mail_address'] else: continue from_list.append( (addr, addr ) ) if not from_list: addr = '<%s@%s>' % ( request.session['username'], request.session['host'] ) from_list = [ (addr, addr )] self.fields['from_addr'].choices = from_list
def show_folders_view(request): '''Show the account folders. ''' # Login to the server: M = serverLogin( request ) # Special folders # TODO: will get this from the user config M.set_special_folders('INBOX', 'INBOX.Drafts', 'INBOX.Templates') # Expandable folders expand_folders = request.user.folderstoexpand_set.all() if expand_folders: M.set_expand_list(*[ f.folder_name for f in expand_folders ]) # Read the subscribed folder list: M.refresh_folders(subscribed=True) # Get the default identity config = WebpymailConfig( request ) identity_list = config.identities() default_address = identity_list[0]['mail_address'] return render_to_response('mail/folder_list.html', {'server': M, 'address': default_address }, context_instance=RequestContext(request))
def show_message_list_view(request, folder=settings.DEFAULT_FOLDER): '''Show the selected Folder message list. ''' M = serverLogin(request) folder_name = base64.urlsafe_b64decode(str(folder)) folder = M[folder_name] message_list = folder.message_list # Set the search criteria: search_criteria = 'ALL' query = None flag = request.GET.get('flag', None) if flag: query = 'flag=%s' % flag search_criteria = 'KEYWORD %s' % flag message_list.set_search_expression(search_criteria) message_list.refresh_messages() # Message action form raw_message_list = [(uid, uid) for uid in message_list.flat_message_list] form = MessageActionForm(data={}, message_list=raw_message_list, server=M) # If it's a POST request if request.method == 'POST': msgactions.batch_change(request, folder, raw_message_list) # Pagination message_list.paginator.msg_per_page = 40 try: page = int(request.GET.get('page', 1)) except: page = request.GET.get('page', 1) if page == 'all': message_list.paginator.msg_per_page = -1 page = 1 message_list.paginator.current_page = page message_list.add_messages_range() # Get the default identity config = WebpymailConfig(request) identity_list = config.identities() default_address = identity_list[0]['mail_address'] # Show the message list return render_to_response('mail/message_list.html', { 'folder': folder, 'address': default_address, 'paginator': folder.paginator(), 'query': query, 'form': form }, context_instance=RequestContext(request))
def show_message_list_view(request, folder=settings.DEFAULT_FOLDER): '''Show the selected Folder message list. ''' M = serverLogin( request ) folder_name = base64.urlsafe_b64decode(str(folder)) folder = M[folder_name] message_list = folder.message_list # Set the search criteria: search_criteria = 'ALL' query = None flag = request.GET.get('flag', None) if flag: query = 'flag=%s' % flag search_criteria = 'KEYWORD %s' % flag message_list.set_search_expression(search_criteria) message_list.refresh_messages() # Message action form raw_message_list = [ (uid,uid) for uid in message_list.flat_message_list ] form = MessageActionForm(data={}, message_list=raw_message_list, server=M) # If it's a POST request if request.method == 'POST': msgactions.batch_change( request, folder, raw_message_list ) # Pagination message_list.paginator.msg_per_page = 40 try: page = int(request.GET.get('page',1)) except: page = request.GET.get('page',1) if page == 'all': message_list.paginator.msg_per_page = -1 page = 1 message_list.paginator.current_page = page message_list.add_messages_range() # Get the default identity config = WebpymailConfig( request ) identity_list = config.identities() default_address = identity_list[0]['mail_address'] # Show the message list return render_to_response( 'mail/message_list.html',{ 'folder':folder, 'address': default_address, 'paginator': folder.paginator(), 'query':query, 'form':form }, context_instance=RequestContext(request))
def show_message_list_view(request, folder=settings.DEFAULT_FOLDER): '''Show the selected Folder message list. ''' M = serverLogin(request) folder_name = base64.urlsafe_b64decode(str(folder)) folder = M[folder_name] message_list = folder.message_list # Set the search criteria: search_criteria = 'ALL' message_list.set_search_expression(search_criteria) # Handle GET queries query = request.GET.copy() flag = request.GET.get('flag', None) if flag: search_criteria = 'KEYWORD %s' % flag show_style = request.GET.get('show_style', 'sorted') if show_style.upper() == 'THREADED': message_list.set_threaded() sort_order = request.GET.get('sort_order', 'DATE').upper() sort = request.GET.get('sort', 'DESCENDING').upper() if sort == 'DESCENDING': sort = '-' else: sort = '' if sort_order in SORT_KEYS: message_list.set_sort_program('%s%s' % (sort, sort_order)) try: page = int(request.GET.get('page', 1)) except: page = request.GET.get('page', 1) if page == 'all': message_list.paginator.msg_per_page = -1 page = 1 if 'page' in query: query.pop('page') # Pagination message_list.paginator.msg_per_page = 40 message_list.paginator.current_page = page # Message action form message_list.refresh_messages() # Necessary to get the flat_message_list raw_message_list = [(uid, uid) for uid in message_list.flat_message_list] form = MessageActionForm(data={}, message_list=raw_message_list, server=M) # If it's a POST request if request.method == 'POST': msgactions.batch_change(request, folder, raw_message_list) # TODO: When setting message flags the MessageList's messages objects # are not updated, so we have to refresh the messages to reflect the # changes in the message list. This should not be necessary, the set # and reset flags method in the Folder objects should update the # message information, saving this way a refresh_messages call. message_list.refresh_messages() # Get the default identity config = WebpymailConfig(request) identity_list = config.identities() default_address = identity_list[0]['mail_address'] # Show the message list return render( request, 'mail/message_list.html', { 'folder': folder, 'address': default_address, 'paginator': folder.paginator(), 'query': query, 'form': form })