currently account delinking is very messy and can sometimes just not work
we do codey stuff so it's not as bad
also we create a pretty page for mops to mop up borked account links
* alts: allow proper delinking
* fix prev commit
* url fix
* fix 500
* fixes
* :pepodrool:
* flag
* :pepodrool: redux
* sdsdsdsds
* correct endpoint
* fix html page
* alts: only adjust session history if flag is set
* fix 500
* allow relinking
* fsdsds
* :pepodrool: redux
* alts: don't fail if an alt isn't history
* use postToastSwitch + some API changes
* remove unnecessary variables
* d-none
* delink accounts mod action
* fa-link-slash
* alts: add form to create alt
* remove copied and pasted template
* rounded section
* UI improvement + fix
* \n
* fix status
* admin: remove duplicate route
admin: do a permissions check on 2 pages that need it
admin: set the manual flag for manually flagged alts
* variable change
* fix 500
* alts
* add shadowban icon to alt link tool
* shadowbanned tooltip
* add user info section
* fix 500, remove unnecessary form, and add alt votes button
* trans and also link to page
* margin
* sdsdsd
* stop the count
* fix prev commit
* with ctx
* plural
* alts
* don't show shadowbanned users to those who can't see them
this is... extremely rare and won't ever be seen in production however if perms were ever rearranged in the future, this keeps permissions correct
* shadowban check in alt list
* let shadow realm enthusiasts see shadowban alts
* sdsdsds
* test
* be graceful where needed
* sdsdsdsds
* alts: don't allow adding the same account
alts: clarify wording
* rename and reorder on admin panel
* EOL
* remove frankly unnecessary check
* try with a set
* test
* Revert "try with a set"
This reverts commit 72be353fba5ffa39b37590cc5d3bf584c94ee06e.
* Revert "Revert "try with a set""
This reverts commit 81e41890a192e8b46d0463477998e905fddf56ba.
* Revert "Revert "Revert "try with a set"""
This reverts commit be51592135a3c09848f993f0154bd2ac862ae505.
* clean up test
* remove /logged_out/ routes
* update sitemap, remove users route, and update header
* cloudflare cookie
* only mess with the cookie whenever we desire auth
* sitemap: (small) improvements
sitemap: fix little bug i introduced
sitemap: fix login redirects for /id/ routes
* sitemap: remove duplicate entry
* contact is auth desired
* imports: don't import what we don't need and bind late to the db
* praying to god this works
* keep yourself safe
* oh i actually need to commit and push lol
* import Sub
* t
* refix cache purger
users: move is_following check to part of the user model itself
users: also don't query followers if the username is wrong and we're redirecting anyway
Touched a ton of files to finally standardize on having trailing
final newlines, as best practice recommends and so our devs stop
accidentally fighting each other over it.
This was performed automatically with the following:
git ls-files -z '*.py' | while IFS= read -rd '' f; \
do tail -c1 < "$f" | read -r _ || echo >> "$f"; done
git ls-files -z '*.css' | while IFS= read -rd '' f; \
do tail -c1 < "$f" | read -r _ || echo >> "$f"; done
This commit touches more files than it ought to because this change
required untangling some circular imports, notably a lingering import
of files.helpers.slots in helpers.actions (presumably from old Snappy
gambling logic) and the User.active_blackjack_game accessor. Otherwise,
the logic is fairly straightforward.
* Add pay and charge methods into user class
* Replace casino charges/payments with new user methods
* Also refund wager on winning slots bets
* Unblock casino routes
Permabanning already prevents users from initiating new DMs, and we
complete this by preventing replying to existing DM chains.
New modmails may still be initiated, and existing modmails may still
be replied to.
Getting the basic hats frontend changes into master so my branch stops
diverging from the templates. Migrates the existing cakeday partyhat
functionality to the new system also.
Establishes a (hopefully) static interface for PFP hat display:
- Hat image assets are 100px w x 130px h and anchored to the bottom-
left corner of pfps.
- User.hat_active provides either empty string or the internal
string identifier for active user hat.
- User.hat_tooltip provides mouseover text. Likely only to be used
for cakeday hats on one's cakeday.
Additionally, per discussion with Carp, PFPs in comments and posts
increased from 25px diameter to 30px.
Initially requested by LGB. However, extended to all sites for
consistency: JL3s can add mods to any hole, so removal of mods seems
symmetrically permitted.
The one expansion of privilege regards removal of early mods on the
mod list. However, I believe this to be minimally destructive because
there is no logic to e.g. delete unmodded holes. Tools that can be
used imprudently, though without catastrophic consequences, are
generally extended to all JL3.
Original work started for WPD and LGB, who wish to restrict flags
visibility in the UI based on admin_level. To support this change and
upcoming changes, `const.PERMS: string -> int` was created.
Potentially targetting a future design where Permissions is a proper
business object integrated with the User model; however, for now just
looking toward getting admin_level magic numbers centralized.
This commit applies PERMS to: create_hole, flags visibility in UI,
flag removal in UI & backend. Flag visibility in Comment & Submission
json_raw methods is unaffected to avoid needing a user object to
build the JSON.
The changes to helpers/get.py @ get_user(...) in a6b7fed2fc resulted
in `is_blocking` no longer being present on all User objects retrieved
via `get_user`. This triggered a latent identifier shadow where the
property method `User.is_blocking` on the User model caused checks for
blocks on objects retrieved via `get_user` to always return True.
Notably: when the get_user return value left `is_blocking` unset and
thus implied False, the following expression yielded True due to the
presence of the first-class function at the same identifier:
hasattr(user, 'is_blocking') and user.is_blocking
* poll rework
* forgot to do joinedload on comments
* Fix logic errors with voting, SQL syntax.
Kitchen sink commit from review of poll-rework changes:
1. Fix seed-db.sql syntax error.
2. Fix SQL patch file duplication of *submissions* tables rather
than one set of submissions and one for comments.
3. Start makeshift SQL patch folder, since this is a large change
that contributors may wish to apply to their local instances.
4. Fix checkbox (non-`exclusive`) polls being unable to be
unchecked. For consistency with `exclusive` polls, they should.
5. Fix changing the option of an `exclusive` poll when both
exclusive and non-exclusive options are present in one comment/
post causing the non-exclusive options to become unchecked.
(which, by my reading of SQLAlchemy `Query.one_or_none()`
really could break quite badly in some cases).
* link relationships with their counterparts
* small modification to poll unchecking
Co-authored-by: TLSM <duolsm@outlook.com>
The User model class method user_awards previously made one query
per type of award. This has been replaced with a new query that
retrieves all owned award quantities at once using GROUP BY.