spi-tools's People
spi-tools's Issues
Handle duplicate dates
See https://en.wikipedia.org/wiki/Wikipedia:Sockpuppet_investigations/Vallabhas/Archive. There's two three (distinct) 12 April 2020 entries. We need to be able to handle this correctly.
Timecard javascript fails with embedded ampersand in user name
https://spi-tools-dev.toolforge.org/spi/timecard/Jaktheladz?users=Fish%26Chimps
The & should probably not be escaped in the javascript?
<canvas id="chart-Fish&Chimps" width="300" height="150"></canvas>
var ctx = $(document)[0].getElementById('chart-Fish&Chimps').getContext('2d');
Read DJANGO_SECRET from config.ini file
Right now, we read it in ~/.bash_profile. That should happen in app.py, just like all the other django environment.
Get django.db.backends to stop logging at DEBUG level
Unify test organization
We've got test_*.py and *_test.py styles. We should use the same style for all of them.
Points to consider: some tests need to run under manage.py because they depend on django configuration. But, raw unittest is faster. Maybe we need a convention to say which tests need django?
UserActivitiesView should handle page titles with ":"
[[Batman: The Dark Knight (roller coaster)]] is in main space!
Override margin-bottom
This is causing bad alignment in sock-select.dtl:
label {
margin-bottom: .5rem;
}
Add option to sock selector to pick up additional socks from Category:Wikipedia sockpuppets of...
Add validator to UserInfoForm to require at least one namespace to be selected
Add a way to adjust history depth in user activity view
Some combination of "most recent N events" and "specified date span"
Write template tags for wikilinks
Add server pid and start time to debug status block
Add auto-restart capability
Consider https://pypi.org/project/watchdog/
Consider uninstalling django.contrib.admin middleware
Consider migrating js files from the template directories to static
Recognize {{user}} in addition to {{checkuser}}
Create javascript shim to open SPI Tools when looking at a given SPI case page
UserActivitiesView should limit search depth
Imagine we ask for:
count = 10
main=False
draft=True
others=False
on a user with 1 million edits but none to draft space. We'll iterate through all 1 million edits trying to find 10 drafts. There should be some circuit breaker which cuts the search off before then. Maybe never examine more than 10*count?
Clean up logging
- Make sure file rotation is really happening
- Add timestamps to log files
- Consider running my own private syslog instance
Convert template includes to template inheritance
Add page moves and other log extracts to user activity view.
Handle multiple sockmasters
ArchiveError at /spi/ip-analysis/Bideliran/
Multiple sockmaster names found: {'Bidelirania', 'Bideliran'}
Not sure what we should do there, but at least not crash.
Display version information on every page
IP Analysis generates broken URLs for links.
Add ability in index view to manually enter a case name
Sometimes [[Wikipedia:Sockpuppet investigations/Cases/Overview]] is out of sync (due to caching?), or you just want to work with an archived case.
This could also be used as a "combine result from two different cases" scenario (#27).
Provide a way to logout
Add more data to sock-select page
Indicate whether sock is blocked, add links to user page, contributions, etc
Deduplicate users in spi-sock-info
Links on /spi/ip-analysis/ don't go anywhere
Typing master name in pop-up doesn't set field properly
Click on the "Case (sockmaster) name" popup. Clear the default entry, type the name of a different case, and accept. You get a "This field is required" error.
Stop using CDN for resources
See https://www.mediawiki.org/wiki/Requests_for_comment/Content-Security-Policy
Javascript and CSS should be downloaded and served locally as static files.
Parse archive title(s) from case page
On occasion, the archive page isn't where you expect it to be. On even more rare occasions, there might be more than one archive. We should handle these correctly.
Make timecard display more compact
Add search for G5-able pages
Make [[links]] active in user-activities view.
Implement bootstrap4 CSS for selectize
Enable logging even if DEBUG == False
IP link in ip-analysis view is broken
Expose SPI case parsing as a REST API
Add oauth support
IndexView.post() should not build raw urls
shortcuts.redirect()
"A view name, possibly with arguments: reverse() will be used to reverse-resolve the name"
Make sock-select table sortable
Handle SPI parsing errors
https://tools.wmflabs.org/spi-tools-dev/spi/spi-sock-select/Alex%20Neman/?archive=1
Expected exactly 1 level-3 heading, found 6
Add ability to combine multiple SPI cases/archives
Selectize cleanup
Either finish tearing out the rest of the selectize support in spi.forms.CaseNameForm, or make selectize work again (see af32e87). If we keep the support, spi.forms.SelectizeField certainly needs to be refactored to not do mwclient API calls inside a form.
selectize is not a function
In IndexView:
jquery.slim.min.js:2 jQuery.Deferred exception: $(...).selectize is not a function TypeError: $(...).selectize is not a function
at HTMLDocument. (https://spi-tools-dev.toolforge.org/spi/:231:24)
at l (https://tools-static.wmflabs.org/cdnjs/ajax/libs/jquery/3.3.1/jquery.slim.min.js:2:29567)
at c (https://tools-static.wmflabs.org/cdnjs/ajax/libs/jquery/3.3.1/jquery.slim.min.js:2:29869) undefined
Generate a unique id for each request.
Include that in the log file, and on the debug data card.
Handle cache busting
See https://github.com/jaddison/django-cachebuster
Consider using {% static %} tag.
$ is not defined in index.js
(index):133 Uncaught ReferenceError: $ is not defined
at (index):133
(anonymous) @ (index):133
Enable logging to stdout
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
๐ Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. ๐๐๐
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google โค๏ธ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.