Base work for teams.
parent
6d0544caab
commit
29fed4e6eb
|
@ -108,6 +108,7 @@ INSTALLED_APPS = (
|
|||
'storages',
|
||||
'taggit',
|
||||
'tastypie',
|
||||
'teams',
|
||||
'typogrify',
|
||||
'user-admin',
|
||||
'utils',
|
||||
|
|
|
@ -0,0 +1,9 @@
|
|||
from django.contrib import admin
|
||||
from teams.models import Team
|
||||
|
||||
|
||||
class TeamAdmin(admin.ModelAdmin):
|
||||
list_display = ('name', 'owner', 'created', 'modified')
|
||||
ordering = ('-created',)
|
||||
|
||||
admin.site.register(Team, TeamAdmin)
|
|
@ -0,0 +1,28 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
from django.conf import settings
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
migrations.swappable_dependency(settings.AUTH_USER_MODEL),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.CreateModel(
|
||||
name='Team',
|
||||
fields=[
|
||||
('id', models.AutoField(verbose_name='ID', serialize=False, auto_created=True, primary_key=True)),
|
||||
('name', models.CharField(max_length=255)),
|
||||
('slug', models.SlugField(max_length=255, blank=True)),
|
||||
('created', models.DateTimeField(auto_now_add=True)),
|
||||
('modified', models.DateTimeField(auto_now=True)),
|
||||
('members', models.ManyToManyField(related_name='member', to=settings.AUTH_USER_MODEL)),
|
||||
('owner', models.ForeignKey(related_name='owner', to=settings.AUTH_USER_MODEL)),
|
||||
('user', models.OneToOneField(to=settings.AUTH_USER_MODEL)),
|
||||
],
|
||||
),
|
||||
]
|
|
@ -0,0 +1,20 @@
|
|||
# -*- coding: utf-8 -*-
|
||||
from __future__ import unicode_literals
|
||||
|
||||
from django.db import models, migrations
|
||||
|
||||
|
||||
class Migration(migrations.Migration):
|
||||
|
||||
dependencies = [
|
||||
('teams', '0001_initial'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AddField(
|
||||
model_name='team',
|
||||
name='email',
|
||||
field=models.EmailField(default='nick@snipt.net', max_length=255),
|
||||
preserve_default=False,
|
||||
),
|
||||
]
|
|
@ -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 = [
|
||||
('teams', '0002_team_email'),
|
||||
]
|
||||
|
||||
operations = [
|
||||
migrations.AlterField(
|
||||
model_name='team',
|
||||
name='user',
|
||||
field=models.OneToOneField(null=True, blank=True, to=settings.AUTH_USER_MODEL),
|
||||
),
|
||||
]
|
|
@ -0,0 +1,23 @@
|
|||
from django.contrib.auth.models import User
|
||||
from django.db import models
|
||||
from snipts.utils import slugify_uniquely
|
||||
|
||||
|
||||
class Team(models.Model):
|
||||
user = models.OneToOneField(User, blank=True, null=True)
|
||||
owner = models.ForeignKey(User, related_name='owner')
|
||||
name = models.CharField(max_length=255)
|
||||
email = models.EmailField(max_length=255)
|
||||
slug = models.SlugField(max_length=255, blank=True)
|
||||
members = models.ManyToManyField(User, related_name='member')
|
||||
|
||||
created = models.DateTimeField(auto_now_add=True, editable=False)
|
||||
modified = models.DateTimeField(auto_now=True, editable=False)
|
||||
|
||||
def save(self, *args, **kwargs):
|
||||
if not self.slug:
|
||||
self.slug = slugify_uniquely(self.name, User, 'username')
|
||||
return super(Team, self).save(*args, **kwargs)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
60
views.py
60
views.py
|
@ -2,7 +2,6 @@ import datetime
|
|||
import hashlib
|
||||
import os
|
||||
import stripe
|
||||
import requests
|
||||
|
||||
from accounts.models import UserProfile
|
||||
from annoying.decorators import ajax_request, render_to
|
||||
|
@ -10,7 +9,6 @@ from blogs.views import blog_list
|
|||
from django.conf import settings
|
||||
from django.contrib.auth.decorators import login_required
|
||||
from django.contrib.auth.models import User
|
||||
from django.core.mail import send_mail
|
||||
from django.db.models import Count
|
||||
from django.http import HttpResponseRedirect, HttpResponseBadRequest
|
||||
from django.shortcuts import render_to_response
|
||||
|
@ -18,6 +16,7 @@ from django.template import RequestContext
|
|||
from snipts.models import Snipt
|
||||
from snipts.utils import get_lexers_list
|
||||
from taggit.models import Tag
|
||||
from teams.models import Team
|
||||
|
||||
|
||||
@render_to('for-teams.html')
|
||||
|
@ -31,59 +30,16 @@ def for_teams(request):
|
|||
|
||||
@render_to('for-teams-complete.html')
|
||||
def for_teams_complete(request):
|
||||
if request.method == 'POST' and request.user.is_authenticated():
|
||||
|
||||
if request.method == 'POST':
|
||||
|
||||
if 'g-recaptcha-response' not in request.POST:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
payload = {
|
||||
'secret': settings.RECAPTCHA_SECRET,
|
||||
'response': request.POST['g-recaptcha-response'],
|
||||
'remoteip': request.META.get('REMOTE_ADDR')
|
||||
}
|
||||
r = requests.post('https://www.google.com/recaptcha/api/siteverify',
|
||||
data=payload)
|
||||
|
||||
if not r.json()['success']:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
if request.user.is_authenticated():
|
||||
name = request.POST['name']
|
||||
members = request.POST['members']
|
||||
info = request.POST['info']
|
||||
send_mail('[Snipt] New Snipt for Teams beta request.', """
|
||||
User: %s (%s)
|
||||
Team name: %s
|
||||
Team members: %s
|
||||
Info:
|
||||
|
||||
%s
|
||||
""" % (request.user.username, request.user.email, name, members,
|
||||
info), 'support@snipt.net',
|
||||
['nick@nicksergeant.com'], fail_silently=False)
|
||||
|
||||
profile = request.user.profile
|
||||
profile.teams_beta_applied = True
|
||||
profile.save()
|
||||
else:
|
||||
username = request.POST['username']
|
||||
email = request.POST['email']
|
||||
name = request.POST['name']
|
||||
members = request.POST['members']
|
||||
info = request.POST['info']
|
||||
send_mail('[Snipt] New Snipt for Teams beta request.', """
|
||||
User: %s (%s) (not authenticated)
|
||||
Team name: %s
|
||||
Team members: %s
|
||||
Info:
|
||||
|
||||
%s
|
||||
""" % (username, email, name, members, info), 'support@snipt.net',
|
||||
['nick@nicksergeant.com'], fail_silently=False)
|
||||
team = Team(name=request.POST['name'],
|
||||
email='nick@snipt.net',
|
||||
owner=request.user)
|
||||
user = User.objects.create_user(team.slug, team.email, 'password')
|
||||
team.user = user
|
||||
team.save()
|
||||
|
||||
return {}
|
||||
|
||||
else:
|
||||
return HttpResponseBadRequest()
|
||||
|
||||
|
|
Caricamento…
Fai riferimento in un nuovo problema