Vishnu KS
127d3de125
billing fixtures: Normalize account_name values in fixtures.
2021-07-02 12:04:41 -07:00
PIG208
dcbb2a78ca
python: Migrate most json_error => JsonableError.
...
JsonableError has two major benefits over json_error:
* It can be raised from anywhere in the codebase, rather than
being a return value, which is much more convenient for refactoring,
as one doesn't potentially need to change error handling style when
extracting a bit of view code to a function.
* It is guaranteed to contain the `code` property, which is helpful
for API consistency.
Various stragglers are not updated because JsonableError requires
subclassing in order to specify custom data or HTTP status codes.
2021-06-30 16:22:38 -07:00
Vishnu KS
d456f85e01
billing: Document model fields that are not self explanatory.
2021-06-28 21:44:16 -07:00
Mateusz Mandera
bae86ad3da
billing: Move exempt_from_from_license_number_check to Customer model.
...
This belongs more on the Customer model, since this is a similar
attribute to default_discount.
2021-06-18 14:05:42 -07:00
Vishnu KS
203ddfc546
billing: Create cents_to_dollar_string helper function.
2021-06-14 16:56:18 -07:00
Vishnu KS
1eb83cbadc
billing: Create is_sponsored_realm function.
2021-06-14 16:49:53 -07:00
Vishnu KS
cdf683e36f
billing: Create customer_has_credit_card_as_default_source function.
2021-06-14 16:49:53 -07:00
Vishnu KS
6e3d4e7e75
billing: Create is_free_trial_offer_enabled function.
2021-06-14 16:49:53 -07:00
Vishnu KS
f55dbe33bb
billing: Create is_realm_on_free_trial helper function.
2021-06-14 16:49:53 -07:00
Vishnu KS
06b5f9feae
billing: Create is_free_trial function in CustomerPlan model.
2021-06-14 16:49:53 -07:00
Vishnu KS
40ab415005
activity: Show effective rate of realms in /activity page.
2021-06-11 07:41:02 -07:00
Vishnu KS
42119c136b
billing: Allow to exclude realms from license limit check.
2021-06-09 17:42:38 -07:00
Vishnu KS
1938076f67
billing: Enforce license limit for plans on manual license management.
2021-06-09 17:42:38 -07:00
Vishnu KS
7197c8ae89
test_classes: Create helper function for subscribing realm to manual plan.
2021-06-09 17:42:38 -07:00
Vishnu KS
3d5ee69b21
stripe: Create make_user_billing_admin helper function.
2021-06-03 10:13:59 -07:00
Mateusz Mandera
67dada8a44
corporate: Add some basic documentation of the corporate/* models.
...
The billing system has been mostly devoid of any documentation. This
commit is meant to add a basic documentation of the data model of this
system.
2021-06-03 09:31:21 -07:00
Abhijeet Prasad Bodas
352634a851
tests: Consistently use assert_length helper.
...
This helper does some nice things like printing out
the data structure incase of failure.
2021-05-19 11:55:56 -07:00
Vishnu KS
5ad50b19cb
billing: Show billing email in /billing page.
2021-05-18 17:46:38 -07:00
Vishnu KS
e019045abe
actions: Create send_message_to_signup_notification_stream.
2021-05-14 15:10:02 -07:00
Vishnu KS
13cf34f283
billing: Add test for billing page when the plan is scheduled for downgrade.
2021-05-14 15:10:02 -07:00
Vishnu KS
323ad83d98
billing: Allow updating licenses of plans on manual license management.
2021-05-14 15:10:02 -07:00
Vishnu KS
20d2e00cf9
billing: Create update_license_ledger_for_manual_plan.
2021-05-14 15:10:02 -07:00
Vishnu KS
611866e3d6
billing: Create CustomerPlan.licenses_at_next_renewal function.
2021-05-14 15:10:02 -07:00
Vishnu KS
922cfac689
billing: Create CustomerPlan.licenses function.
2021-05-14 15:10:02 -07:00
Vishnu KS
878dcd95d0
billing: Call make_end_of_cycle_updates_if_needed before plan is updated.
2021-05-14 15:10:02 -07:00
Vishnu KS
45f7a25351
billing: Rename licenses_used variable to seat_count.
2021-05-14 15:10:02 -07:00
Vishnu KS
c9f4439850
billing: Extract out validate_licenses function.
2021-05-14 15:10:02 -07:00
Vishnu KS
d9baa681b2
billing: Use PATCH request for changing plan status.
...
I think it's much more cleaner to use PATCH request on
/json/billing/plan than using a POST request on
/json/billing/plan/change to update the plan.
2021-05-14 15:10:02 -07:00
Tim Abbott
7563e3692c
billing: Add nocoverage for some untested error cases.
...
Ideally, we'd have tests covering these cases.
2021-05-07 09:51:23 -07:00
Vishnu KS
d88f1103b7
corporate: Use check_int_in in change_plan_status.
2021-05-07 09:37:41 -07:00
Vishnu KS
752fd2e2d1
corporate: Fix string encoding in billing and sponsorship endpoints.
2021-05-07 09:37:40 -07:00
Vishnu KS
760a3861e1
corporate: Create VALID_BILLING_SCHEDULE_VALUES in views.py.
2021-05-07 09:32:29 -07:00
Vishnu KS
ef1b3a4067
corporate: Create VALID_BILLING_MODALITY_VALUES in views.py.
2021-05-07 09:32:29 -07:00
Vishnu KS
6db6fab5ff
corporate: Create VALID_LICENSE_MANAGEMENT_VALUES in views.py.
2021-05-07 09:32:29 -07:00
Anders Kaseorg
e7ed907cf6
python: Convert deprecated Django ugettext alias to gettext.
...
django.utils.translation.ugettext is a deprecated alias of
django.utils.translation.gettext as of Django 3.0, and will be removed
in Django 4.0.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-04-15 18:01:34 -07:00
Anders Kaseorg
f0e655f1d8
request: Rename validator parameter of REQ to json_validator.
...
This makes it much more clear that this feature does JSON encoding,
which previously was only indicated in the documentation.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-04-07 14:13:06 -07:00
Siddharth Asthana
80c9243c6a
support: Create RealmAuditLog when updating sponsorship status.
2021-04-03 08:01:46 -07:00
Siddharth Asthana
233c4d520c
support: Create RealmAuditLog when updating billing_method.
...
This commit also makes acting_user as a mandantory argument and fixes
the tests accordingly.
2021-04-03 08:01:46 -07:00
Siddharth Asthana
44c34cb39a
support: Create RealmAuditLog when approving sponsorship.
2021-04-03 08:01:46 -07:00
Siddharth Asthana
6945ed3587
support: Pass acting_user to attach_discount_to_realm.
2021-04-03 08:01:46 -07:00
Siddharth Asthana
c3f37c2a64
support: Pass acting_user to do_change_plan_type.
...
acting_user is now a mandatory field, so wherever this function is used,
we are passing acting_user as well.
2021-04-03 08:01:46 -07:00
shanukun
4b00e5da72
refactor: Make acting_user a mandatory kwarg for do_deactivate_realm.
2021-04-02 14:44:41 -07:00
Mateusz Mandera
f329878376
migrations: Subscription.is_user_active denormalization - step one.
...
This adds the is_user_active with the appropriate code for setting the
value correctly in the future. In the following commit a migration to
backfill the value for existing Subscriptions will be added.
To ensure correct user_profile.is_active handling also in tests, we
replace all direct .is_active mutation with calls to appropriate
functions.
2021-03-30 09:19:03 -07:00
shanukun
c95061e9b9
refactor: Make acting_user a mandatory kwarg for do_deactivate_user.
2021-03-29 15:51:45 -07:00
shanukun
8f3ae715c0
refactor: Make acting_user a mandatory kwarg for do_reactivate_user.
2021-03-29 15:51:45 -07:00
m-e-l-u-h-a-n
5ae896758d
logging: use assertEqual to assert logging output.
...
This commit migrates some tests in test_stripe.py and
test_embedded_bot_system.py to use assertEqual instead of
assertRegexpMatches for asserting logs, as suggested here:
https://github.com/zulip/zulip/pull/16818#discussion_r569888862
2021-03-25 01:10:03 -07:00
Mateusz Mandera
d91d3a05b9
tests: Use do_create_realm where possible.
...
Using do_create_realm should be preferred over manual creation where
possible, as it creates more realistic data.
2021-03-14 08:50:02 -07:00
shanukun
fafe1a31d7
refactor: Make acting_user a mandatory kwarg for do_activate_user.
2021-02-25 17:58:00 -08:00
shanukun
4b67946605
refactor: Make acting_user a mandatory kwarg for do_create_user.
2021-02-25 17:58:00 -08:00
Alex Vandiver
e53be6d043
email: Set an envelope-from which may be different from the From: field.
...
The envelope-from is used by the MTA if the destination address is not
deliverable. Route all such mail to the noreply address.
2021-02-24 17:32:28 -08:00
Mateusz Mandera
09fc79f911
actions: Remove realm argument to internal_send_private_message.
...
The argument is redundant.
2021-02-23 15:26:47 -08:00
Anders Kaseorg
6e4c3e41dc
python: Normalize quotes with Black.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-02-12 13:11:19 -08:00
Anders Kaseorg
11741543da
python: Reformat with Black, except quotes.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2021-02-12 13:11:19 -08:00
m-e-l-u-h-a-n
ccf520ff13
logging: Migrate many backend tests to use assertLogs.
...
This commit migrates some of the backend tests to use assertLogs(),
instead of mock.patch() as planned in #15331 .
Tweaked by tabbott to avoid tautological assertions.
2021-02-03 17:55:49 -08:00
m-e-l-u-h-a-n
7417ac9165
logging: Remove unncessary logging patches in backend tests.
...
There were some tests that had mock patches for logging, although no
logging was actually happening there. This commit removes such patches
in `corporate/tests/test_stripe.py`, `zerver/tests/test_cache.py`,
`zerver/tests/test_queue_worker.py`,
and `zerver/tests/test_signup.py`.
2021-02-03 17:47:38 -08:00
Vishnu KS
bd2642a7b8
billing: Make attach discount update the current price per license.
2020-12-17 17:09:20 -08:00
Vishnu KS
480288643c
billing: Create calculate_discounted_price_per_license.
2020-12-17 17:09:20 -08:00
Vishnu KS
71efcca679
stripe: Create get_price_per_license function.
2020-12-17 17:09:20 -08:00
Anders Kaseorg
f294688157
test_stripe: Add CallableT cast.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-11-10 15:54:27 -08:00
Anders Kaseorg
4e9d587535
python: Pass query parameters as a dict when making GET requests.
...
This provides automatic URL-encoding.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-10-27 13:47:02 -07:00
Anders Kaseorg
f461a64a6b
i18n: Fix some ineffective calls to ugettext at top level.
...
Translation has no effect when we don’t yet know what language we’re
translating for.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-10-18 14:31:15 -07:00
Anders Kaseorg
dd48dbd912
docs: Add spaces to “check out”, “log in”, “set up”, “sign up” as verbs.
...
“Checkout”, “login”, “setup”, and “signup” are nouns, not verbs.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-10-13 15:47:13 -07:00
Vishnu KS
510efbc1a8
support: Add option to change billing method.
2020-09-28 15:37:49 -07:00
Vishnu KS
dbaea757ae
billing: Create downgrade_at_the_end_of_billing_cycle.
2020-09-28 15:37:49 -07:00
Vishnu KS
b8b2e443bc
stripe: Create void_all_open_invoices.
2020-09-28 15:37:49 -07:00
Vishnu KS
0d30f59c97
billing: downgrade_now -> downgrade_now_without_creating_additional_invoice.
2020-09-28 15:37:49 -07:00
Alex Vandiver
b06253049a
stripe: Change `assert_called` to `assert_called_once`.
...
Prefer using `assert_called_once` to protect against places where a
mock might be reused, and in so doing have been previously called,
thus making the second usage of `assert_called` not assert anything of
note.
2020-09-23 15:29:47 -07:00
Alex Vandiver
ab4f6b54ea
stripe: Do not log credit card issues as errors.
...
Problems with the card itself should not be logged as errors -- while
perhaps notable in aggregate, they are not worthy of being logged to
Sentry, for instance.
Downgrade these to `info`; continue to log other problems at the
`error` level. This updates tests for this change, and in so doing
corrects a test that does not do its job, due to a missing
`reset_mock`.
2020-09-23 15:29:47 -07:00
Anders Kaseorg
0228acf0f5
rest: Add rest_path shortcut for path with rest_dispatch.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-22 10:51:00 -07:00
Anders Kaseorg
5297e4a30a
urls: Use unqualified imports.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-22 10:51:00 -07:00
Anders Kaseorg
e70f2ae58d
rest: Specify rest_dispatch handlers by function, not by string.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-22 10:46:28 -07:00
Anders Kaseorg
faf600e9f5
urls: Remove unused URL names and shorten others.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-22 10:46:28 -07:00
Anders Kaseorg
b7b7475672
python: Use standard secrets module to generate random tokens.
...
There are three functional side effects:
• Correct an insignificant but mathematically offensive bias toward
repeated characters in generate_api_key introduced in commit
47b4283c4b4c70ecde4d3c8de871c90ee2506d87; its entropy is increased
from 190.52864 bits to 190.53428 bits.
• Use the base32 alphabet in confirmation.models.generate_key; its
entropy is reduced from 124.07820 bits to the documented 120 bits, but
now it uses 1 syscall instead of 24.
• Use the base32 alphabet in get_bigbluebutton_url; its entropy is
reduced from 51.69925 bits to 50 bits, but now it uses 1 syscall
instead of 10.
(The base32 alphabet is A-Z 2-7. We could probably replace all of
these with plain secrets.token_urlsafe, since I expect most callers
can handle the full urlsafe_b64 alphabet A-Z a-z 0-9 - _ without
problems.)
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-09 15:52:57 -07:00
Anders Kaseorg
bef46dab3c
python: Prefer kwargs form of dict.update.
...
For less inflation by Black.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-03 17:51:09 -07:00
Anders Kaseorg
9048f79e53
test_stripe: Simplify with iterable unpacking.
...
Issue suggested by the flake8-comprehensions plugin, although the
solution is simpler.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-02 11:15:41 -07:00
Anders Kaseorg
ab120a03bc
python: Replace unnecessary intermediate lists with generators.
...
Mostly suggested by the flake8-comprehension plugin.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-09-02 11:15:41 -07:00
Vishnu KS
d3c7277f77
billing: Show sponsorship message for organization on STANDARD_FREE.
...
Fixes #16180
2020-08-24 18:25:01 -07:00
Anders Kaseorg
61d0417e75
python: Replace ujson with orjson.
...
Fixes #6507 .
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-08-11 10:55:12 -07:00
Anders Kaseorg
60a25b2721
docs: Fix spelling errors caught by codespell.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-08-11 10:23:06 -07:00
Alex Vandiver
2928bbc8bd
logging: Report stack_info on logging.exception calls.
...
The exception trace only goes from where the exception was thrown up
to where the `logging.exception` call is; any context as to where
_that_ was called from is lost, unless `stack_info` is passed as well.
Having the stack is particularly useful for Sentry exceptions, which
gain the full stack trace.
Add `stack_info=True` on all `logging.exception` calls with a
non-trivial stack; we omit `wsgi.py`. Adjusts tests to match.
2020-08-11 10:16:54 -07:00
Anders Kaseorg
219fc36051
stripe_fixtures: Fix incorrectly normalized JSON.
...
JSON does not allow leading zeros.
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-08-07 15:05:01 -07:00
Anders Kaseorg
a329b538d2
test_helpers: Fix instrument_url decorator type.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-08-07 10:53:06 -07:00
Vishnu KS
5b0b1efb15
support: Add functionality to approve sponsorship requests.
...
This should make it much easier to process these requests.
2020-07-24 17:55:38 -07:00
Vishnu KS
d3834f8b9a
emails: Simplify requested by line in sponsorship email.
2020-07-24 17:39:46 -07:00
Vishnu KS
1a1396d07e
support: Show customer plan details in support page.
2020-07-24 17:37:41 -07:00
Vishnu KS
f6cbb9177a
models: Add plan_name attribute to CustomerPlan.
2020-07-24 17:37:41 -07:00
Vishnu KS
67bacd6e31
billing: Don't allow guest users to upgrade.
2020-07-22 16:57:49 -07:00
Vishnu KS
cb01a7f599
billing: Restrict access to billing page to realm owners and billing admins.
2020-07-22 16:57:49 -07:00
Clara Dantas
8b30e03d4b
models.py: Add get_role_name function in UserProfile class.
...
This function returns the name of the user role that we can use
to display in error report emails.
2020-07-21 16:12:16 -07:00
Steve Howell
c44500175d
database: Remove short_name from UserProfile.
...
A few major themes here:
- We remove short_name from UserProfile
and add the appropriate migration.
- We remove short_name from various
cache-related lists of fields.
- We allow import tools to continue to
write short_name to their export files,
and then we simply ignore the field
at import time.
- We change functions like do_create_user,
create_user_profile, etc.
- We keep short_name in the /json/bots
API. (It actually gets turned into
an email.)
- We don't modify our LDAP code much
here.
2020-07-17 11:15:15 -07:00
Mateusz Mandera
dd5349096f
test_stripe: Fix invalid UserProfile creation.
2020-07-15 19:29:24 +02:00
Vishnu KS
108ad84944
billing: Use no-reply address as from_address in sponsorship emails.
2020-07-14 00:36:31 -07:00
Steve Howell
0b65abcdf5
pointer: Remove pointer from UserProfile.
...
Most of the changes here are just that we no
longer need to provide a value for pointer
when we create UserProfile objects.
2020-07-03 13:08:40 +00:00
Vishnu KS
4c6350fa4b
billing: Add option to request a sponsorship in /upgrade.
2020-07-01 16:45:38 -07:00
Anders Kaseorg
f2e7076e2a
decorator: Replace type: ignore with cast, avoid Any.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-06-30 18:58:23 -07:00
Anders Kaseorg
8667e632c8
python: Use isinstance with a tuple for testing multiple types.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-06-30 18:58:23 -07:00
Anders Kaseorg
e883567146
test_stripe: Fix a type: ignore issue.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-06-23 11:29:54 -07:00
Anders Kaseorg
b95fc4858d
corporate: Replace unchecked cast calls with assert.
...
Signed-off-by: Anders Kaseorg <anders@zulip.com>
2020-06-22 17:11:42 -07:00
Vishnu KS
508ba663dc
billing: Wrap make_end_of_cycle_updates_if_needed with transaction.atomic.
...
Otherwise, the plan would be left in an inconsistent state if one of the
queries fail.
2020-06-18 17:34:03 -07:00
Vishnu KS
cde4486f8c
billing: Support switching from monthly to annual plan.
2020-06-18 17:34:03 -07:00