[Trac] Users and Sessions (long message)
Daniel Serodio
daniel.listas at xxx.com.br
Tue Oct 4 14:26:06 CDT 2005
I'm struggling with restrict_owners too. I've added a comment to ticket
#222, let's hope someone who understand how this works comments on it.
As for 4), you only need to run "DELETE FROM session" on your Trac
installation's database:
echo "DELETE FROM session;" | sqlite /var/lib/trac/db/trac.db
HTH,
Daniel Serodio
ECKHART.CURT wrote:
>OK Gang. I have some meat to chew on.
>
>Last Friday, I started a meandering trail that has led me to the sessions table.
>I’m looking at TRAC 0.8.4 and I’ve only mucked with my own local copy of the code, so no worries polluting the real code (yet).
>
>My goal was to add in code that provided a drop down list of team members to the appropriate fields of a ticket.
>
>I might add here that I have been a professional programmer for over 20 years and while I haven't done anything in Python before, I've already got a confidience enough of what's going on here to tweek around a bit. I sourced the code that I was adding based on patches that I located while searching the main TRAC site that were associated with the current trunk. I was thinking that it would be independent enough so that I could have this feature without pulling a full upgrade to 0.9, but now I'm wondering if I may have made a bad decision. :-)
>
>I was trying to splice in the patches that provided a dropdown lists of team members when entering or changing a ticket. I got everything running, but still no dropdown list. Then I started digging around to see what was wrong.
>
>I came to this passage of code:
>
>-----------------------
> def get_known_users(self, cnx=None):
> """
> Generator that yields information about all known users, i.e. users that
> have logged in to this Trac environment and possibly set their name and
> email.
>
> This function generates one tuple for every user, of the form
> (username, name, email) ordered alpha-numerically by username.
> """
> if not cnx:
> cnx = self.get_db_cnx()
> cursor = cnx.cursor()
> cursor.execute("SELECT DISTINCT s.username, n.var_value, e.var_value "
> "FROM session AS s "
> " LEFT JOIN session AS n ON (n.sid IS NULL "
> " AND n.username=s.username AND n.var_name = 'name') "
> " LEFT JOIN session AS e ON (e.sid IS NULL "
> " AND e.username=s.username AND e.var_name = 'email') "
> "WHERE s.sid IS NULL ORDER BY s.username")
> for username,name,email in cursor:
> yield username, name, email
>---------------------------
>
>I extracted the query shown above into a custom report and sure enough got an empty result set. By dumping my session table, I see that 'sid' is never null, so this join will never produce a result.
>
>So now I come to you good folks. Here are a few questions that might help to guide the discussion:
>
>1) Is session support broken in 0.8.4? From what I see in my sessions table, I have a suspicion.
>
>2) Under what conditions should I see a row in the session table where sid is NULL? I understand how the table is being used to store arbitrary variables associated with a user, so I don't think this is a stupid user (i.e. me) problem.
>
>3) I see many SID groupings that have nothing more than the mod_time and last_visit variables. What's the point?
>
>4) Is there a mechanism to clean out the session table? I tried storing a session and I made up my sid as 'ECKHART'. I changed the way that I authenticated everyone and made it lose the domain prefix and now I get 'session belongs to another user' or some such wording and I can't retrieve the session. How do I erase it? On a large installation, this table would get incredibly polluted very fast if what I see is typical.
>
>5) What controls the generation of a new SID for a person? I have extracted a little bit of the table so that you can see what I'm looking at. Seems to me that the 'Username' column ought to be enough to tie everything together for a user. Once someone is authenticated, simply grouping based on Username would tie everything to a logged in user. Non authenticated users could all be lumped together as 'anonymous' or 'somebody' and we should just disable the 'settings' link until they log in. Storing a persistant cookie would then be superflous; The log in credentials would provide everything needed to ID the user. You could use a browser cookie to track the session, but you wouln't need to store it in the session table.
>
>Amy I missing the boat here? I've been trying to get email notification of tickets going also with only minor success, and I suspect that the session table might be driving some of those problems too.
>
>BTW, I was going to make the jump to the 0.9 trunk until I read Christopher's memory leak announcement this morning! :-)
>
>I would be willing to give this area some attention if you all would want me to. I've seen a bit of discussion lately about authenticating users and I think this would strengthen TRAC a bit if we got thise settled.
>
>Extract of Curt's session table follows...
>
>------------------------
>022b6da6b200bc45953e5bfa JOULLIAN.DEBBIE mod_time 1124991974
>cf245995393217a269df728b JOULLIAN.DEBBIE mod_time 1124826081
>cf245995393217a269df728b JOULLIAN.DEBBIE last_visit 1124822785
>f0b76c4c86fb5e2144eab61e JOULLIAN.DEBBIE mod_time 1124737563
>f0b76c4c86fb5e2144eab61e JOULLIAN.DEBBIE last_visit 1124737563
>8b7c1c866d060b44d6a4af32 JOULLIAN.DEBBIE mod_time 1124461768
>8b7c1c866d060b44d6a4af32 JOULLIAN.DEBBIE last_visit 1124461768
>5e9d6fdc8eefadd00dd63c95 JOULLIAN.DEBBIE mod_time 1124379587
>5e9d6fdc8eefadd00dd63c95 JOULLIAN.DEBBIE last_visit 1124378016
>32a9721f8e1ff74a67d2b999 JOULLIAN.DEBBIE mod_time 1124369951
>32a9721f8e1ff74a67d2b999 JOULLIAN.DEBBIE last_visit 1124308158
>05678f91411f50b780278eef JOULLIAN.DEBBIE mod_time 1124288232
>05678f91411f50b780278eef JOULLIAN.DEBBIE last_visit 1124280876
>f60e2e00984e571bf9033aaf JOULLIAN.DEBBIE mod_time 1124197038
>517d4431bf8d77a7ef13e331 JOULLIAN.DEBBIE email joullian.debbie at leg.state.fl.us
>517d4431bf8d77a7ef13e331 JOULLIAN.DEBBIE name Debbie Joullian
>517d4431bf8d77a7ef13e331 JOULLIAN.DEBBIE mod_time 1123854155
>------------------------
>
>Curt Eckhart
>The Florida Legislature
>Office of Legislative Information Technology Services
>Office : (850) 488-5340
>
>"A successful tool is one that was used to do something undreamt of by its author." - Stephen C. Johnson
>
>
More information about the Trac
mailing list