Skip to content
Snippets Groups Projects
Commit f49a4b9b authored by Frank Duncan's avatar Frank Duncan
Browse files

Initial project commit

parents
No related branches found
No related tags found
No related merge requests found
comps
*.csv
# userscript
Script to get the latest user logins to the different competitions, organized
by user.
Run [script.sh](script.sh) followed by [run.lisp](run.lisp)
run.lisp 0 → 100644
(asdf:load-system :cl-csv)
(asdf:load-system :cl-ppcre)
(with-open-file (str "output.csv" :direction :output :if-exists :supersede)
(let*
((comps
(sort
(mapcar
(lambda (csv)
(cons
(pathname-name csv)
(cl-csv:read-csv csv)))
(directory "/home/ots-macfound/misc/userscript/comps/*.csv"))
#'string<
:key #'car))
(users
(sort
(remove-duplicates (mapcar (lambda (user-row) (subseq user-row 0 3)) (apply #'append (mapcar #'cdr comps))) :test #'equalp)
#'string<
:key #'car)))
(cl-csv:write-csv
(cons
(append
(list
"Username"
"Email"
"Real Name"
"Last Login"
)
(mapcar #'car comps))
(mapcar
(lambda (user)
(let
((per-comp-info
(mapcar
(lambda (comp)
(let
((user-in-comp (find user (cdr comp) :test #'equalp :key (lambda (x) (subseq x 0 3)))))
(when user-in-comp
(list
(fourth user-in-comp)
(let
((moment
(cond
((string= "NULL" (sixth user-in-comp)) (fifth user-in-comp))
((string= "" (sixth user-in-comp)) (fifth user-in-comp))
((string>= (fifth user-in-comp) (sixth user-in-comp)) (fifth user-in-comp))
(t (sixth user-in-comp)))))
(if
(or (not moment) (< (length moment) 8))
""
(format nil "~A-~A-~A"
(subseq moment 0 4)
(subseq moment 4 6)
(subseq moment 6 8))))))))
comps)))
(append
user
(let
((last-login (car (sort (remove nil (mapcar #'cadr per-comp-info)) #'string>))))
(list last-login))
(mapcar
(lambda (comp-info)
(if comp-info
(format nil "~{~A: ~A~}" comp-info)
""))
per-comp-info))))
users))
:stream str)))
;(with-open-file (str "output.csv" :direction :output :if-exists :supersede)
; (let*
; ((comps
; (sort
; (mapcar
; (lambda (csv)
; (cons
; (pathname-name csv)
; (cl-csv:read-csv csv)))
; (directory "/home/ots-macfound/misc/userscript/comps/*.csv"))
; #'string<
; :key #'car))
; (users
; (sort
; (remove-duplicates (mapcar (lambda (user-row) (subseq user-row 0 3)) (apply #'append (mapcar #'cdr comps))) :test #'equalp)
; #'string<
; :key #'car)))
; (mapcar
; (lambda (target-user)
; (let
; ((alternate-user
; (find-if
; (lambda (user)
; (and
; (string= (first target-user) (first user))
; (not (cl-ppcre:scan "^username.*" (third user)))))
; users)))
; (if (not alternate-user)
; (format t "Couldn't find another user for ~S~%" target-user)
; (format t "update user set user_real_name = '~A' where user_name = '~A';~%"
; (third alternate-user)
; (first alternate-user)))))
; (remove-if-not (lambda (user) (cl-ppcre:scan "^username.*" (third user))) users))))
#!/bin/bash
# Script written to give an output for Jim McGowan on May 5, 2021
# Email correspsondence around that time
mkdir -p comps
for comp in GlobalView 100Change2020 Climate2030 ECW2020 LoneStar2020 100Change2020Demo DemoView EO2020 LLIIA2020 RacialEquity2030 ; do
echo $comp
PASS=$(opass show clients/lever-for-change/torque-sites/$comp/ansible/prod | grep db_password | sed -e 's/db_password: //')
USER=$(cat ~/torque-sites/competitions/$comp/ansible/inv/prod/group_vars/all/base | grep db_username | sed -e 's/db_username: //')
echo $PASS
echo $USER
ssh torque.leverforchange.org "mysql -N $comp -u $USER --password='$PASS' -e 'select u.user_name, u.user_email, u.user_real_name, IF(u.user_password = \"\", \"Okta\", \"Local\"), u.user_touched, max(l.log_timestamp) from user u left join actor a on u.user_id = a.actor_user left join logging l on l.log_actor = a.actor_id group by u.user_id'" | csvcut -t > comps/$comp.csv
done
for comp in 100Change2017 100Change2017Partners ; do
echo $comp
PASS=$(opass show clients/lever-for-change/torque-sites/$comp/ansible/prod | grep db_password | sed -e 's/db_password: //')
USER=$(cat ~/torque-sites/competitions/$comp/ansible/inv/prod/group_vars/all/base | grep db_username | sed -e 's/db_username: //')
echo $PASS
echo $USER
ssh torque.leverforchange.org "psql -A -F ' ' -U $USER -h localhost $comp -c \"select u.user_name, u.user_email, u.user_real_name, CASE WHEN u.user_password = '' THEN 'Okta' ELSE 'Local' END, to_char(u.user_touched, 'YYYYMMDDHHMISS'), to_char(max(l.log_timestamp), 'YYYYMMDDHHMISS') from mediawiki.mwuser u left join mediawiki.actor a on u.user_id = a.actor_user left join mediawiki.logging l on l.log_actor = a.actor_id group by u.user_id\"" | csvcut -t > comps/$comp.csv
done
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment