Skip to content

Commit

Permalink
Merge c784d53 into 5dd2263
Browse files Browse the repository at this point in the history
  • Loading branch information
bee-keeper committed Nov 26, 2015
2 parents 5dd2263 + c784d53 commit 31af610
Show file tree
Hide file tree
Showing 12 changed files with 52 additions and 14 deletions.
2 changes: 2 additions & 0 deletions .coveragerc
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
[run]
include = invitations*
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -6,4 +6,4 @@ dist/
django_invitations.egg-info/
.gitchangelog.rc
.python-version

.coverage
4 changes: 4 additions & 0 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,9 +24,13 @@ matrix:
install:
- pip install tox
- pip install flake8
- pip install coveralls

branches:
- devel
- master

script: tox -e $TOX_ENV

after_success:
- coveralls
6 changes: 5 additions & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
##Django-invitations - Invitation integration for django-allauth

[![Build Status](https://travis-ci.org/bee-keeper/django-invitations.svg?branch=devel)](https://travis-ci.org/bee-keeper/django-invitations)
.. image:: https://travis-ci.org/bee-keeper/django-invitations.svg?branch=master
:target: https://travis-ci.org/bee-keeper/django-invitations

.. image:: https://coveralls.io/repos/bee-keeper/django-invitations/badge.svg?branch=devel&service=github
:target: https://coveralls.io/github/bee-keeper/django-invitations?branch=devel

###About
A Django invite app for the excellent [django-allauth](https://github.com/pennersr/django-allauth). All emails and messages are fully customisable.
Expand Down
7 changes: 5 additions & 2 deletions invitations/forms.py
Original file line number Diff line number Diff line change
Expand Up @@ -64,14 +64,17 @@ class InvitationAdminAddForm(forms.ModelForm, CleanEmailMixin):
def save(self, *args, **kwargs):
cleaned_data = super(InvitationAdminAddForm, self).clean()
email = cleaned_data.get("email")
instance = Invitation.create(email=email)
params = {'email': email}
if cleaned_data.get("inviter"):
params['inviter'] = cleaned_data.get("inviter")
instance = Invitation.create(**params)
instance.send_invitation(self.request)
super(InvitationAdminAddForm, self).save(*args, **kwargs)
return instance

class Meta:
model = Invitation
fields = ("email", )
fields = ("email", "inviter")


class InvitationAdminChangeForm(forms.ModelForm):
Expand Down
20 changes: 20 additions & 0 deletions invitations/migrations/0003_auto_20151126_1523.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

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


class Migration(migrations.Migration):

dependencies = [
('invitations', '0002_auto_20151126_0426'),
]

operations = [
migrations.AlterField(
model_name='invitation',
name='inviter',
field=models.ForeignKey(blank=True, to=settings.AUTH_USER_MODEL, null=True),
),
]
7 changes: 4 additions & 3 deletions invitations/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -26,17 +26,18 @@ class Invitation(models.Model):
default=timezone.now)
key = models.CharField(verbose_name=_('key'), max_length=64, unique=True)
sent = models.DateTimeField(verbose_name=_('sent'), null=True)
inviter = models.ForeignKey(settings.AUTH_USER_MODEL, null=True)
inviter = models.ForeignKey(
settings.AUTH_USER_MODEL, null=True, blank=True)

objects = InvitationManager()

@classmethod
def create(cls, email, user=None):
def create(cls, email, inviter=None):
key = get_random_string(64).lower()
instance = cls._default_manager.create(
email=email,
key=key,
inviter=user)
inviter=inviter)
return instance

def key_expired(self):
Expand Down
3 changes: 2 additions & 1 deletion invitations/tests.py
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,8 @@ def setUpClass(cls):
cls.user = get_user_model().objects.create_user(
username='flibble',
password='password')
cls.invitation = Invitation.create('email@example.com', user=cls.user)
cls.invitation = Invitation.create(
'email@example.com', inviter=cls.user)

@classmethod
def tearDownClass(cls):
Expand Down
2 changes: 1 addition & 1 deletion requirements.txt
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
django-allauth>=0.22
django-allauth
tox>=2.1.1
mock>=1.3.0
coverage>=3.7.1
Expand Down
6 changes: 2 additions & 4 deletions test_settings.py
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': ':memory:',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}

Expand Down Expand Up @@ -56,6 +52,7 @@

INSTALLED_APPS = (
'django.contrib.auth',
'django.contrib.admin',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.sites',
Expand All @@ -68,6 +65,7 @@
)

EMAIL_BACKEND = 'django.core.mail.backends.locmem.EmailBackend'
# EMAIL_BACKEND = 'django.core.mail.backends.console.EmailBackend'

AUTHENTICATION_BACKENDS = (
'django.contrib.auth.backends.ModelBackend',
Expand Down
3 changes: 3 additions & 0 deletions test_urls.py
Original file line number Diff line number Diff line change
@@ -1,8 +1,11 @@
from django.conf.urls import patterns, url, include
from django.contrib import admin


urlpatterns = patterns(
'',
url(r'^invitations/', include(
'invitations.urls', namespace='invitations')),
url(r'^accounts/', include('allauth.urls')),
url(r'^admin/', include(admin.site.urls)),
)
4 changes: 3 additions & 1 deletion tox.ini
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,9 @@ deps =

commands =
python -V
python manage.py test
coverage run manage.py test
coverage report
coverage html

[testenv:flake8]
basepython=python
Expand Down

0 comments on commit 31af610

Please sign in to comment.