-
Notifications
You must be signed in to change notification settings - Fork 127
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Support for a free plan #24
Comments
Yes, freemium plan is very needed. From the perspective of current django-plans architecture please consider following django models:
So from this perspective of a free plan does not really diverse from any other plan. In fact this should be just a single Plan which DOES NOT have any PlanPricing definded (so in fact user cannot buy it directly, there will be no "buy" buttons generated for this plan). The only difference in the business logic you should implement is to be sure that:
In terms of presentation layer, there is a question how to specially mark in a HTML pricing table that this plan is freemium? I would suggest to implement plans tagging as described here: #22 When you need something like that, you can just tag the plan with "freemium" tag and use it in you layout. PS. I would also recommend not to provide a strict rule that there can be only one "freemium" plan. I can imagine that somebody would like to change freemium plan but leaving old clients with old usage quoatas (on the old freemium plan). This would lead to creating a "new" freemium plan, and setting old freemium plan as not available any more. Old users could use it, new one see only new freemium plan, but you end up with 2 freemium plans in the system :-) |
I will use the logic you've described that's a great way to handle that. And I'll fix and turn this issue into a PR with the necessary changes to avoid exception. Be back soon with some enhancements. And you're right, no constrain on the number of free plan, that was a bad idea. |
Did anything come of this? |
+1 here - the free plan is a really important thing! |
So I've implemented most of the suggestions here for implementing a free plan. But I've run into an issue with the way the system implements plan changes. When downgrading from a paid to a free plan, I'm setting UserPlan.expire to Was there a reason for this lock of explicit pricing choice during plan change? |
Perhaps if the user's current plan is one of these "free" plans, we shouldn't allow a standard plan-change, but rather force a normal plan-order. |
I think the most reasonable thing is to force user to purchase a paid plan in this case. The other way is maybe implementing some settings variable that says if user has free plan he can change plan and get X days for free , than he starts to pay. But It is rather a questiom does the second sollution have any business application. I would prefer first solution as it is elegant and obvious. You have free plan until you finally pay for some extra plan. |
I have a PR that implements the first option (I believe) incoming... |
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links. Signed-off-by: Devang Shah <shahd@vmware.com>
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
FIxed now? |
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
Fixes django-getpaid#24 Plans without pricings will be `plan.is_free: true`. Switching to these plans causes the userplan have it's expiry cleared. Since there's no expiry set, the standard plan change process doesn't make sense, so the plan table is adjusted to present the standard plan order links rather than plan change links.
It appears that there is not a real support for a free plan.
The spec is something like this for me
Spec
I'm willing to contribute to this one, just want to discuss the specificities with you a little bit, because I'm sure you've already thought about it.
The text was updated successfully, but these errors were encountered: