diff --git a/states.py b/states.py index 99fa320..fb19d27 100644 --- a/states.py +++ b/states.py @@ -62,10 +62,9 @@ class States(PA): # this is any next/prev or noo, grouping, etc. change (so use referrer to work out what to do with this) # because this can happen on a view, or files_up, etc. change this FIRST if 'change_file_opts' in request.path: - ref=request.referrer base=request.base_url base=base.replace("change_file_opts", "") - self.url = "/"+ref.replace(base, "" ) + self.url = "/"+request.referrer.replace(base, "" ) # if view_list, then we really are a view, and view_eid should be in the form if 'view_list' in request.path: @@ -82,16 +81,18 @@ class States(PA): else: # GET's occur on redirect, and we don't have a form, so get it from pref st=self.url[8:] - ref=request.referrer - if 'search' in ref: - st=re.sub( '.+/search/', '', ref ) + if request.referrer and 'search' in request.referrer: + st=re.sub( '.+/search/', '', request.referrer ) else: st='' pref=PA_UserState.query.filter(PA_UserState.pa_user_dn==current_user.dn,PA_UserState.path_type==self.path_type,PA_UserState.view_eid==self.view_eid,PA_UserState.orig_search_term==st).first() if not pref: - SetFELog( message=f"ERROR: pref not found - DONT CLOSE THIS!!! dn={current_user.dn}, st={st}, s={self}????" , log_level="error", persistent=True, cant_close=True ) + SetFELog( message=f"ERROR: pref not found - dn={current_user.dn}, st={st}, s={self}????" , level="danger", persistent=True, cant_close=True ) redirect("/") else: + if not hasattr( pref, 'orig_url' ): + SetFELog( message=f"ERROR: orig_url not in pref - dn={current_user.dn}, st={st}, self={self}, pref={pref}????" , level="danger", persistent=True, cant_close=True ) + redirect("/") self.url = pref.orig_url if 'files_ip' in self.url or 'file_list_ip' in self.url: @@ -123,22 +124,28 @@ class States(PA): elif 'view' in self.url: # use url to get eid of viewed entry self.view_eid = self.url[6:] - self.path_type="View" + # force this to be a search so rest of code won't totally die, but also not return anything + self.path_type="Search" self.orig_url=self.url elif 'change_file_opts' not in self.url: - SetFELog( message=f"ERROR: DDP messed up, failed to match URL {self.url} for settings this will fail, redirecting to home" , log_level="error", persistent=True, cant_close=True ) - SetFELog( message=f"referrer={request.referrer}" , log_level="error", - persistent=True, cant_close=True ) + SetFELog( message=f"ERROR: DDP messed up, failed to match URL {self.url} for settings this will fail, redirecting to home" , level="danger", persistent=True, cant_close=True ) + SetFELog( message=f"referrer={request.referrer}" , level="danger", persistent=True, cant_close=True ) return if self.path_type == 'View': pref=PA_UserState.query.filter(PA_UserState.pa_user_dn==current_user.dn,PA_UserState.path_type==self.path_type,PA_UserState.view_eid==self.view_eid,PA_UserState.orig_search_term==self.orig_search_term).first() + if not hasattr( self, 'orig_ptype' ): + self.orig_ptype='View' + self.orig_url='' + SetFELog( message=f"ERROR: No orig ptype? s={self} - pref={pref}, redirecting to home" , level="danger", persistent=True, cant_close=True ) + SetFELog( message=f"referrer={request.referrer}" , level="danger", persistent=True, cant_close=True ) + redirect("/") + # should find original path or search for this view (if not a search, search_term='') orig_pref=PA_UserState.query.filter(PA_UserState.pa_user_dn==current_user.dn,PA_UserState.path_type==self.orig_ptype,PA_UserState.orig_search_term==self.orig_search_term).first() if not orig_pref: - SetFELog( message=f"ERROR: DDP messed up 2, failed to find orig_pref for a view pt={self.path_type} for search={self.orig_search_term}" , log_level="error", persistent=True, cant_close=True ) - SetFELog( message=f"referrer={request.referrer}" , log_level="error", - persistent=True, cant_close=True ) + SetFELog( message=f"ERROR: DDP messed up 2, failed to find orig_pref for a view pt={self.path_type} for search={self.orig_search_term}" , level="danger", persistent=True, cant_close=True ) + SetFELog( message=f"referrer={request.referrer}" , level="danger", persistent=True, cant_close=True ) return elif self.path_type == 'Search': pref=PA_UserState.query.filter(PA_UserState.pa_user_dn==current_user.dn,PA_UserState.path_type==self.path_type,PA_UserState.orig_search_term==self.orig_search_term).first() @@ -255,8 +262,8 @@ class States(PA): self.offset += int(self.how_many) else: # should be impossible now, but leave jic - SetFELog( message=f"WARNING: next image requested, but would go past end of list? - ignore this" , log_level="warning", persistent=True, cant_close=True ) - SetFELog( message=f"DDP - offset={self.offset} + how_many={self.how_many} > num_entries={self.num_entries}" , log_level="error", persistent=True, cant_close=True ) + SetFELog( message=f"WARNING: next image requested, but would go past end of list? - ignore this" , level="warning", persistent=True, cant_close=True ) + SetFELog( message=f"DDP - offset={self.offset} + how_many={self.how_many} > num_entries={self.num_entries}" , level="danger", persistent=True, cant_close=True ) if 'current' in request.form: self.current = int(request.form['current'])