From 2b03f33f5b8efc77f24717d3c69ff0a1c929a3e3 Mon Sep 17 00:00:00 2001 From: lins05 Date: Wed, 23 Jan 2013 12:06:11 +0800 Subject: [PATCH] improve get_(org)_user_events --- utils/__init__.py | 22 ++++++++++++++++++++-- views.py | 5 ++++- 2 files changed, 24 insertions(+), 3 deletions(-) diff --git a/utils/__init__.py b/utils/__init__.py index fa2b2b6b0e..ba523c9a1b 100644 --- a/utils/__init__.py +++ b/utils/__init__.py @@ -462,17 +462,35 @@ if hasattr(settings, 'EVENTS_CONFIG_FILE'): def _get_events(username, start, org_id=None): ev_session = SeafEventsSession() + total = 11 + valid_events = [] + while total == 11 and len(valid_events) < 11: + total, events = _get_events_inner(ev_session, username, start, org_id) + start += len(events) + valid_events.extend(events) + + ev_session.close() + + return valid_events[:11] + + def _get_events_inner(ev_session, username, start, org_id=None): + '''Read 11 events from seafevents database, and remove events that are + no longer valid + + ''' if org_id == None: events = seafevents.get_user_events(ev_session, username, start, start + 11) else: events = seafevents.get_org_user_events(ev_session, \ org_id, username, start, start + 11) + total = len(events) valid_events = [] - ev_session.close() for ev in events: if ev.etype == 'repo-update': repo = get_repo(ev.repo_id) if not repo: + # delete the update event for repo which has been deleted + seafevents.delete_event(ev_session, ev.uuid) continue if repo.encrypted: repo.password_set = seafserv_rpc.is_passwd_set(repo.id, username) @@ -481,7 +499,7 @@ if hasattr(settings, 'EVENTS_CONFIG_FILE'): valid_events.append(ev) - return valid_events + return total, valid_events def get_user_events(username, start): return _get_events(username, start) diff --git a/views.py b/views.py index 9cf83ad56e..645fcc5000 100644 --- a/views.py +++ b/views.py @@ -2939,7 +2939,10 @@ def events(request): org_id = request.GET.get('org_id') events = get_org_user_events(org_id, username, start) else: - events = get_user_events(username, start) + try: + events = get_user_events(username, start) + except Exception, e: + print e events_more = False if len(events) == 11: