mirror of
https://github.com/zulip/zulip.git
synced 2025-11-04 05:53:43 +00:00
This reverts commit 620b2cd6e.
Contributors setting up a new development environment were getting
errors like this:
```
++ dirname tools/do-destroy-rebuild-database
[...]
+ ./manage.py purge_queue --all
Traceback (most recent call last):
[...]
File "/home/zulipdev/zulip/zproject/legacy_urls.py", line 3, in <module>
import zerver.views.streams
File "/home/zulipdev/zulip/zerver/views/streams.py", line 187, in <module>
method_kwarg_pairs: List[FuncKwargPair]) -> HttpResponse:
File "/usr/lib/python3.5/typing.py", line 1025, in __getitem__
tvars = _type_vars(params)
[...]
File "/usr/lib/python3.5/typing.py", line 277, in _get_type_vars
for t in types:
TypeError: 'ellipsis' object is not iterable
```
The issue appears to be that we're using the `typing` module from the
3.5 stdlib, rather than the `typing=3.6.2` in our requirements files,
and that doesn't understand the `Callable[..., HttpResponse]` that
appears in the definition of `FuncKwargPair`.
Revert for now to get provision working again; at least one person
reports that reverting this sufficed. We'll need to do more testing
before putting this change back in.
46 lines
1.7 KiB
Python
46 lines
1.7 KiB
Python
from django.http import HttpRequest, HttpResponse
|
|
from django.utils.translation import ugettext as _
|
|
from zerver.lib.bot_storage import (
|
|
get_bot_storage,
|
|
set_bot_storage,
|
|
remove_bot_storage,
|
|
get_keys_in_bot_storage,
|
|
is_key_in_bot_storage,
|
|
StateError,
|
|
)
|
|
from zerver.decorator import has_request_variables, REQ
|
|
from zerver.lib.response import json_success, json_error
|
|
from zerver.lib.validator import check_dict, check_list, check_string
|
|
from zerver.models import UserProfile
|
|
|
|
from typing import Dict, List, Optional
|
|
|
|
@has_request_variables
|
|
def update_storage(request, user_profile, storage=REQ(validator=check_dict([]))):
|
|
# type: (HttpRequest, UserProfile, Optional[Dict[str, str]]) -> HttpResponse
|
|
try:
|
|
set_bot_storage(user_profile, list(storage.items()))
|
|
except StateError as e:
|
|
return json_error(str(e))
|
|
return json_success()
|
|
|
|
@has_request_variables
|
|
def get_storage(request, user_profile, keys=REQ(validator=check_list(check_string), default=None)):
|
|
# type: (HttpRequest, UserProfile, Optional[List[str]]) -> HttpResponse
|
|
keys = keys or get_keys_in_bot_storage(user_profile)
|
|
try:
|
|
storage = {key: get_bot_storage(user_profile, key) for key in keys}
|
|
except StateError as e:
|
|
return json_error(str(e))
|
|
return json_success({'storage': storage})
|
|
|
|
@has_request_variables
|
|
def remove_storage(request, user_profile, keys=REQ(validator=check_list(check_string), default=None)):
|
|
# type: (HttpRequest, UserProfile, Optional[List[str]]) -> HttpResponse
|
|
keys = keys or get_keys_in_bot_storage(user_profile)
|
|
try:
|
|
remove_bot_storage(user_profile, keys)
|
|
except StateError as e:
|
|
return json_error(str(e))
|
|
return json_success()
|