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.
User modify API redesign
This is not a pull request.
Anyways, implementation ideas welcome (try not repeating what I've already thought about).
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
- Support new API's to block and unblock rooms
- Suppport the Room State API HOT 1
- Deactivating multiple users at once HOT 4
- Add possibility to pass token via environment variable HOT 8
- Reduce postgresql database size? HOT 2
- Room Id not correct HOT 2
- Improve README: Add detailed prerequisites for matrix-docker-ansible-deploy users HOT 1
- Reintroduce the --servername option to the `media` commands HOT 1
- Unable to delete room HOT 7
- Unable to delete room (status code 500) HOT 4
- synadm stopped functioning on server HOT 4
- Integrate code-style checks into our CI HOT 3
- Catch non-existent rooms on room delete earlier
- Make it possible to change user type
- Investigate why we allow empty string as output format HOT 4
- Special internal room IDs breaks some commands HOT 3
- synadm 0.38 requires Click<8.0,>=7.0, but you have click 8.1.3 which is incompatible. HOT 15
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.