Skip to content

Commit

Permalink
Merge pull request #84 from nephila/feature/pluggable_forms
Browse files Browse the repository at this point in the history
make forms pluggable
  • Loading branch information
bee-keeper committed Jan 30, 2018
2 parents 6f912a0 + 1b21a4a commit 801a5e3
Show file tree
Hide file tree
Showing 12 changed files with 59 additions and 27 deletions.
15 changes: 7 additions & 8 deletions invitations/adapters.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,21 @@
from django.template.loader import render_to_string
from django.contrib import messages
from django.conf import settings
from django.template import TemplateDoesNotExist
from django.core.mail import EmailMultiAlternatives, EmailMessage
from django.contrib import messages
from django.contrib.sites.models import Site
from django.core.mail import EmailMessage, EmailMultiAlternatives
from django.template import TemplateDoesNotExist
from django.template.loader import render_to_string

from .app_settings import app_settings
from .utils import import_attribute

try:
from django.utils.encoding import force_text
except ImportError:
from django.utils.encoding import force_unicode as force_text

from .app_settings import app_settings
from .utils import import_attribute


# Code credits here to django-allauth
class BaseInvitationsAdapter(object):

def stash_verified_email(self, request, email):
request.session['account_verified_email'] = email

Expand Down
6 changes: 4 additions & 2 deletions invitations/admin.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
from django.contrib import admin

from .forms import InvitationAdminAddForm, InvitationAdminChangeForm
from .utils import get_invitation_model
from .utils import (get_invitation_admin_add_form,
get_invitation_admin_change_form, get_invitation_model)

Invitation = get_invitation_model()
InvitationAdminAddForm = get_invitation_admin_add_form()
InvitationAdminChangeForm = get_invitation_admin_change_form()


class InvitationAdmin(admin.ModelAdmin):
Expand Down
18 changes: 18 additions & 0 deletions invitations/app_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -80,5 +80,23 @@ def INVITATION_MODEL(self):
"""
return self._setting("INVITATION_MODEL", "invitations.Invitation")

@property
def INVITE_FORM(self):
return self._setting("INVITE_FORM", "invitations.forms.InviteForm")

@property
def ADMIN_ADD_FORM(self):
return self._setting(
"ADMIN_ADD_FORM",
"invitations.forms.InvitationAdminAddForm"
)

@property
def ADMIN_CHANGE_FORM(self):
return self._setting(
"ADMIN_CHANGE_FORM",
"invitations.forms.InvitationAdminChangeForm"
)


app_settings = AppSettings('INVITATIONS_')
4 changes: 2 additions & 2 deletions invitations/forms.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
from django import forms
from django.utils.translation import ugettext_lazy as _
from django.contrib.auth import get_user_model
from django.utils.translation import ugettext_lazy as _

from .adapters import get_invitations_adapter
from .exceptions import AlreadyInvited, AlreadyAccepted, UserRegisteredEmail
from .exceptions import AlreadyAccepted, AlreadyInvited, UserRegisteredEmail
from .utils import get_invitation_model

Invitation = get_invitation_model()
Expand Down
3 changes: 2 additions & 1 deletion invitations/management/commands/clear_expired_invitations.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
from django.core.management.base import BaseCommand
from .. .utils import get_invitation_model

from ...utils import get_invitation_model

Invitation = get_invitation_model()

Expand Down
2 changes: 1 addition & 1 deletion invitations/managers.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
from datetime import timedelta

from django.db import models
from django.utils import timezone
from django.db.models import Q
from django.utils import timezone

from .app_settings import app_settings

Expand Down
2 changes: 1 addition & 1 deletion invitations/migrations/0001_initial.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
import django.utils.timezone
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
2 changes: 1 addition & 1 deletion invitations/migrations/0002_auto_20151126_0426.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models

EMAIL_MAX_LENGTH = getattr(settings, 'INVITATIONS_EMAIL_MAX_LENGTH', 254)

Expand Down
2 changes: 1 addition & 1 deletion invitations/migrations/0003_auto_20151126_1523.py
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models, migrations
import django.db.models.deletion
from django.conf import settings
from django.db import migrations, models


class Migration(migrations.Migration):
Expand Down
1 change: 0 additions & 1 deletion invitations/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,6 @@
from django.utils import timezone
from django.utils.crypto import get_random_string
from django.utils.encoding import python_2_unicode_compatible

from django.utils.translation import ugettext_lazy as _

from . import signals
Expand Down
12 changes: 12 additions & 0 deletions invitations/utils.py
Original file line number Diff line number Diff line change
Expand Up @@ -17,6 +17,18 @@ def import_attribute(path):
return ret


def get_invite_form():
return import_attribute(app_settings.INVITE_FORM)


def get_invitation_admin_add_form():
return import_attribute(app_settings.ADMIN_ADD_FORM)


def get_invitation_admin_change_form():
return import_attribute(app_settings.ADMIN_CHANGE_FORM)


def get_invitation_model():
"""
Returns the Invitation model that is active in this project.
Expand Down
19 changes: 10 additions & 9 deletions invitations/views.py
Original file line number Diff line number Diff line change
@@ -1,24 +1,25 @@
import json

from django.views.generic import FormView, View
from django.views.generic.detail import SingleObjectMixin
from django.contrib import messages
from django.http import Http404, HttpResponse
from django.shortcuts import redirect
from django.contrib.auth.decorators import login_required
from django.core.exceptions import ValidationError
from django.core.validators import validate_email
from django.contrib.auth.decorators import login_required
from django.http import Http404, HttpResponse
from django.shortcuts import redirect
from django.utils.decorators import method_decorator
from django.utils.translation import ugettext_lazy as _
from django.views.generic import FormView, View
from django.views.generic.detail import SingleObjectMixin

from .forms import InviteForm, CleanEmailMixin
from .exceptions import AlreadyInvited, AlreadyAccepted, UserRegisteredEmail
from .app_settings import app_settings
from .adapters import get_invitations_adapter
from .app_settings import app_settings
from .exceptions import AlreadyAccepted, AlreadyInvited, UserRegisteredEmail
from .forms import CleanEmailMixin
from .signals import invite_accepted
from .utils import get_invitation_model
from .utils import get_invitation_model, get_invite_form

Invitation = get_invitation_model()
InviteForm = get_invite_form()


class SendInvite(FormView):
Expand Down

0 comments on commit 801a5e3

Please sign in to comment.