Comments (10)
(re)implementation ideas:
- accept dict/json instead?
- accept value on if something is set (that's not so nice to work with)
- define a value is considered undefined and check for that (
None
can't be used, norFalse
orTrue
or maybe even arbitrary strings, probably should be a special type)
(i previously put it into #90, the wrong place. sorry!)
from synadm.
You could change the initial report here: user-type works now :-) (not the most beautiful solution, but works now at least ;-)
from synadm.
Ok so before we continuie with refactoring ideas here I'd like to state one design idea that I think kind of was with 'synadm' from when I started coding it. I wanted api methods to be able to work as closely as the api docs describe them as possible. I wanted api methods to support everything that the api supports or at least stay close to that.
For example: When the docs say that it's possible to "omit" a json text from the post data, the api method should be able to do that as well.
If we take the api in question, let's have a look, we see that a lot of the parts of the json are marked as "optional". In that case leaving them out entirely from the post dasta would mean "leave that setting untouched": https://matrix-org.github.io/synapse/latest/admin_api/user_admin_api.html#create-or-modify-account
With that in mind, let's start to collect ideas.
The first thing that comes up is a simple one and would improve the "falsy" problem: Change all the exclusion conditions to use if not None
. eg:
if avatar_url is not None:
data.update({"avatar_url": avatar_url})
from synadm.
I think with that we would finally fix what I was aiming for in the first place:
- define a value is considered undefined and check for that (
None
can't be used, norFalse
orTrue
or maybe even arbitrary strings, probably should be a special type)
Only I'm wondering what kind of value that could be? Simply a string? Named 'undefined'? Sounds ugly, but actually is the functionality we want :-)
from synadm.
Reopening. Was closed because the two bugs that were introduced due to this clumsy design were actually (quick) fixed. Please @JacksonChen666 go ahead with a more robust reimplementation of the user_modify method. Appreciated! My personal opinion is that a "good enough" solution would be to just use is not None
for the optionality checks, which would fix the "falsy" problem at least. For further "specialities" like we have with user_type='null'
a way simply by working around with strings can be used. Not too bad I think but yeah if you would find something cleaner, sure, go ahead, cleaner is always better :-)
from synadm.
now throwing my thoughts into how the new user modify API should be:
- separate APIs methods for individually modifiable things (lock for lock, deactivate for deactivate) even though it actually hits the same admin API in synapse
- of course, new individual commands that use the new individual APIs
- maybe 1 API for all user profile related stuff like display names and PFPs. maybe.
from synadm.
now throwing my thoughts into how the new user modify API should be:
separate APIs methods for individually modifiable things (lock for lock, deactivate for deactivate) even though it actually hits the same admin API in synapse
of course, new individual commands that use the new individual APIs
maybe 1 API for all user profile related stuff like display names and PFPs. maybe.
splitting sounds good. it's a messy thing trying to do too much currently
from synadm.
Just adding my use case as it can't be fulfilled by the current design: I need to remove a 3pid from a user, could this be possible with the redesign of the command?
from synadm.
Just adding my use case as it can't be fulfilled by the current design: I need to remove a 3pid from a user, could this be possible with the redesign of the command?
Not yet, see checklist.
The plan is to eventually have something, but for now, you still have synadm user modify --threepid
(which I'm actually not sure how you're supposed to use).
from synadm.
for now, you still have
synadm user modify --threepid
(which I'm actually not sure how you're supposed to use).
From what I understand of the docs and my tests, this option does not allow to remove/override the existing 3pids, only to add more:
-t, --threepid <threepid>
Add a third-party identifier. [...]
from synadm.
Related Issues (20)
- User modify command doesn't show difference in non-interactive output mode
- synadm doesn't work after v0.38 with Click 7.0 HOT 8
- regtok delete is broken HOT 8
- Prepare for Read the Docs Configuration v2
- Add a way to see synadm version HOT 6
- 0.42 not on PyPi HOT 2
- Command line reference in docs is empty HOT 3
- Account (un)locking HOT 1
- Admin user filter in user list API
- User list function breaking change HOT 1
- Streamlining of "Admin API" wording HOT 2
- GitHub Actions pipeline "release" throwing deprecations/warnings HOT 1
- invalid token generated with synadm login HOT 2
- Removing of threepid is not supported HOT 2
- M_NOT_JSON error when trying to delete room HOT 2
- Links to synapse documentation is old
- Cannot do a login without first configuring synadm HOT 1
- Synapse returned status code 400 - Can only delete local media HOT 8
- synadm media delete uses deprecated API endpoint
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.
from synadm.