email invitation work, forms tweaks

This commit is contained in:
Johnson Chetty 2012-10-23 13:50:09 +02:00
parent 2c80c16b14
commit 7913e231ac
5 changed files with 69 additions and 28 deletions

View File

@ -39,6 +39,13 @@ class TheatreGroupAdmin(admin.ModelAdmin):
save_on_top = True save_on_top = True
#class LocationAdmin(admin.ModelAdmin):
# save_on_top = True
class CityAdmin(admin.ModelAdmin):
pass
admin.site.register(Occupation, OccupationAdmin) admin.site.register(Occupation, OccupationAdmin)
admin.site.register(Relation, RelationAdmin) admin.site.register(Relation, RelationAdmin)
admin.site.register(TheatreGroup, TheatreGroupAdmin) admin.site.register(TheatreGroup, TheatreGroupAdmin)
@ -46,6 +53,8 @@ admin.site.register(Person)
admin.site.register(Language) admin.site.register(Language)
admin.site.register(Training) admin.site.register(Training)
admin.site.register(Production) admin.site.register(Production)
#admin.site.register(Location,LocationAdmin)
admin.site.register(City,CityAdmin)
#class TalkAdmin(admin.ModelAdmin): #class TalkAdmin(admin.ModelAdmin):
# inlines = [PadmaVideoInline, AudioInline, ImageInline, DocumentInline] # inlines = [PadmaVideoInline, AudioInline, ImageInline, DocumentInline]

View File

@ -29,7 +29,6 @@ class LocationForm(ItfForm):
LocationsInline = itf_inlineformset_factory(Location, form=LocationForm, title="Locations", is_generic=True) LocationsInline = itf_inlineformset_factory(Location, form=LocationForm, title="Locations", is_generic=True)
class BuzzItemsForm(ItfForm): class BuzzItemsForm(ItfForm):
class Meta: class Meta:
@ -92,7 +91,7 @@ class PopupProductionForm(PopupForm):
class Meta: class Meta:
model = Production model = Production
fields = ('name', 'group',) fields = ('name', 'group',)
#Inline form definitions and inlines for Person form #Inline form definitions and inlines for Person form
@ -115,6 +114,15 @@ class PersonProductionForm(ItfForm):
class Meta: class Meta:
model = PersonProduction model = PersonProduction
class TheatreGroupProductionForm(ItfForm):
#j pass an empty list,
#production = forms.ModelChoiceField([], widget=AutocompleteAddWidget(model_class=Production))
class Meta:
model = Production
ProductionsTheatreGroupInline = itf_inlineformset_factory(TheatreGroup, Production, form=TheatreGroupProductionForm, extra=1, title="Productions")
class PersonGroupForm(ItfForm): class PersonGroupForm(ItfForm):
group = forms.ModelChoiceField(TheatreGroup.objects.all(), widget=AutocompleteAddWidget(model_class=TheatreGroup)) group = forms.ModelChoiceField(TheatreGroup.objects.all(), widget=AutocompleteAddWidget(model_class=TheatreGroup))
@ -123,6 +131,7 @@ class PersonGroupForm(ItfForm):
ConnectionsInline = itf_inlineformset_factory(Person, PersonPerson, fk_name='person1', form=ConnectionsForm, extra=1, title="Add / Edit Connections", help_text="select the people you are connected with and how you are related in the theatre world") ConnectionsInline = itf_inlineformset_factory(Person, PersonPerson, fk_name='person1', form=ConnectionsForm, extra=1, title="Add / Edit Connections", help_text="select the people you are connected with and how you are related in the theatre world")
ProductionsInline = itf_inlineformset_factory(Person, PersonProduction, form=PersonProductionForm, extra=1, title="Productions you have worked in") ProductionsInline = itf_inlineformset_factory(Person, PersonProduction, form=PersonProductionForm, extra=1, title="Productions you have worked in")
GroupsInline = itf_inlineformset_factory(Person, PersonGroup, extra=1, form=PersonGroupForm, title="Theatre groups you are a part of or have worked with") GroupsInline = itf_inlineformset_factory(Person, PersonGroup, extra=1, form=PersonGroupForm, title="Theatre groups you are a part of or have worked with")
PersonOccupationsInline = itf_inlineformset_factory(Person, PersonOccupation, extra=1, form=PersonOccupationForm, title="Select your occupation / you can add as many as you like") PersonOccupationsInline = itf_inlineformset_factory(Person, PersonOccupation, extra=1, form=PersonOccupationForm, title="Select your occupation / you can add as many as you like")
@ -176,7 +185,7 @@ GroupOccupationInline = itf_inlineformset_factory(TheatreGroup, GroupGroupOccupa
class TheatreGroupForm(ItfForm): class TheatreGroupForm(ItfForm):
languages = forms.ModelMultipleChoiceField(Language.objects.all(), widget=forms.CheckboxSelectMultiple()) languages = forms.ModelMultipleChoiceField(Language.objects.all(), widget=forms.CheckboxSelectMultiple())
inlines = [GroupOccupationInline, PersonGroupInline, ResourcesInline, BuzzItemsInline, AwardsInline, TrainingsInline, LocationsInline] inlines = [GroupOccupationInline, PersonGroupInline, ResourcesInline, BuzzItemsInline, AwardsInline, TrainingsInline, LocationsInline, ProductionsTheatreGroupInline]
class Meta: class Meta:
model = TheatreGroup model = TheatreGroup
@ -213,11 +222,26 @@ class ItfAllAuthRegForm(forms.Form):
firstname=forms.CharField() firstname=forms.CharField()
lastname=forms.CharField() lastname=forms.CharField()
def save(self, user): #def __init__(self, request=None):
def save(self, user, request=None):
first_name = self.cleaned_data['firstname'] first_name = self.cleaned_data['firstname']
last_name = self.cleaned_data['lastname'] last_name = self.cleaned_data['lastname']
p = Person(user=user, first_name=first_name, last_name=last_name, email=user.email) if request.session['invite_code']:
p.save() invite_code = request.session['invite_code']
pi = PersonInvitation.objects.get(invite_code=invite_code)
inviter = pi.inviter
invitee = pi.invitee
invitee.user=user
invitee.save()
else:
p = Person(user=user, first_name=first_name, last_name=last_name, email=user.email)
p.save()
user.first_name = first_name
user.last_name = last_name
user.save()
return self return self

View File

@ -138,19 +138,18 @@ class PersonInvitation(models.Model):
invitee = models.ForeignKey(Person, related_name='was_invited_by', null=True, blank=True) invitee = models.ForeignKey(Person, related_name='was_invited_by', null=True, blank=True)
is_validated=models.BooleanField(default=False) is_validated=models.BooleanField(default=False)
sent_date = models.DateTimeField() sent_date = models.DateTimeField()
def __unicode__(self):
return u'%s, %s' % (self.invitee.first_name, self.invitee.email)
def send(self): def send_mail(self):
#import pdb ; pdb.set_trace()
#from django.template.loader import get_template
template = get_template('modules/itfprofiles/invitation_email.txt')
subject = 'Invitation to join the India Theatre Forum' subject = 'Invitation to join the India Theatre Forum'
template = get_template('/itfprofiles/invitation_email.txt')
link = 'http://%s/invitation/accept/%s/' % ( "test.theatreforum.in", self.invite_code, ) link = 'http://%s/invitation/accept/%s/' % ( "test.theatreforum.in", self.invite_code, )
context = Context({ context = Context({
'name': str(self.invitee.first_name) + str(self.invitee.last_name), 'name': str(self.invitee.first_name) + str(self.invitee.last_name),
'link': link, 'link': link,
'sender': str(self.inviter.first_name) + str(self.inviter.last_name), 'sender': str(self.inviter.first_name) + str(self.inviter.last_name)
}) })
message = template.render(context) message = template.render(context)
send_mail( send_mail(
@ -158,6 +157,11 @@ class PersonInvitation(models.Model):
DEFAULT_FROM_MAIL, [self.invitee.email] DEFAULT_FROM_MAIL, [self.invitee.email]
) )
def __unicode__(self):
return u'%s, %s' % (self.invitee.first_name, self.invitee.email)
class BuzzItem(ItfModel): class BuzzItem(ItfModel):
link = models.URLField(verify_exists=False) link = models.URLField(verify_exists=False)
@ -207,18 +211,20 @@ STATE_CHOICES= (
('31', 'Tripura'), ('31', 'Tripura'),
('32', 'Uttarakhand (Uttaranchal)'), ('32', 'Uttarakhand (Uttaranchal)'),
('33', 'Uttar Pradesh'), ('33', 'Uttar Pradesh'),
('34', 'West Bengal') ('34', 'West Bengal'),
('35', 'Not Applicable'),
) )
class City(models.Model): class City(models.Model):
name = models.CharField(max_length=255) name = models.CharField(max_length=255)
state = models.CharField(choices = STATE_CHOICES, max_length=255) state = models.CharField(choices = STATE_CHOICES, max_length=255)
def __unicode__(self):
return self.name
from django.contrib.localflavor.in_.forms import INZipCodeField from django.contrib.localflavor.in_.forms import INZipCodeField
class Location(models.Model): class Location(models.Model):
lat= models.FloatField(blank=True, null=True) #lat= models.FloatField(blank=True, null=True)
lon= models.FloatField(blank=True, null=True) #lon= models.FloatField(blank=True, null=True)
city = models.ForeignKey(City) city = models.ForeignKey(City)
pincode= INZipCodeField() pincode= INZipCodeField()
address= models.TextField() address= models.TextField()
@ -254,6 +260,7 @@ class Training(models.Model):
person = models.ForeignKey("Person") person = models.ForeignKey("Person")
area = models.CharField(max_length=255) area = models.CharField(max_length=255)
with_whom = models.CharField(max_length=255) # Is this a foreign key to person, or group, or just text field like now? with_whom = models.CharField(max_length=255) # Is this a foreign key to person, or group, or just text field like now?
#trained_by=models.ManyToManyField('Person', related_name='trained')
where = models.ForeignKey("TheatreGroup") where = models.ForeignKey("TheatreGroup")
from_when = models.DateField(blank=True, null=True) from_when = models.DateField(blank=True, null=True)
until_when = models.DateField(blank=True, null=True) until_when = models.DateField(blank=True, null=True)

View File

@ -1,13 +1,13 @@
# Create your views here. # Create your views here.
from models import * from models import *
from forms import * from forms import *
from django.shortcuts import render_to_response from django.shortcuts import render_to_response, get_object_or_404
from ox.django.shortcuts import render_to_json_response from ox.django.shortcuts import render_to_json_response
from django.core.paginator import Paginator, InvalidPage, EmptyPage from django.core.paginator import Paginator, InvalidPage, EmptyPage
from django.template import RequestContext from django.template import RequestContext
from django.http import HttpResponse, HttpResponseRedirect from django.http import HttpResponse, HttpResponseRedirect
from django.contrib.auth.decorators import login_required from django.contrib.auth.decorators import login_required
from django.views.decorators.csrf import csrf_exempt
from datetime import datetime from datetime import datetime
def person_form(request): def person_form(request):
@ -49,7 +49,8 @@ def edit_profile(request):
}) })
return render_to_response("test/person_form.html", context) return render_to_response("test/person_form.html", context)
@login_required @csrf_exempt
@login_required
def friend_invite(request): def friend_invite(request):
if request.method == 'POST': if request.method == 'POST':
form = PersonForm(request.POST, request.FILES) form = PersonForm(request.POST, request.FILES)
@ -62,11 +63,11 @@ def friend_invite(request):
inviter=Person.objects.get(user=request.user), inviter=Person.objects.get(user=request.user),
sent_date=datetime.now() sent_date=datetime.now()
) )
invitation.send() invitation.save()
try: #try:
invitation.save() invitation.send_mail()
except: #except:
return HttpResponse("<html><body>Not Invited!!</body></html>") # return HttpResponse("<html><body>Not Invited!!</body></html>")
return HttpResponse("<html><body>Invited!!</body></html>") return HttpResponse("<html><body>Invited!!</body></html>")
#return HttpResponseRedirect('/invitation/invite/') #return HttpResponseRedirect('/invitation/invite/')
@ -83,9 +84,9 @@ def friend_invite(request):
def invitation_accept(request,invite_code): def invitation_accept(request,invite_code):
invitation = get_object_or_404(PersonInvitation, invite_code__exact=invite_code) #invitation = get_object_or_404(PersonInvitation, invite_code__exact=invite_code)
request.session['invitation'] = invitation.id request.session['invite_code'] = invite_code
return HttpResponseRedirect('/accounts/madd') return HttpResponseRedirect('/accounts/signup')

View File

@ -57,7 +57,7 @@ urlpatterns = patterns('',
(r'emailsignuplist', 'festival.views.email_signups'), (r'emailsignuplist', 'festival.views.email_signups'),
(r'^favicon.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/images/favicon.ico'}), (r'^favicon.ico$', 'django.views.generic.simple.redirect_to', {'url': '/static/images/favicon.ico'}),
(r'^invitation/(w+)/$','itfprofiles.views.invitation_accept'), (r'^invitation/accept/(?P<invite_code>\w+)/','itfprofiles.views.invitation_accept'),
#(r'^invitation/add/$', 'itfprofiles.views.friend_add'), #(r'^invitation/add/$', 'itfprofiles.views.friend_add'),
(r'^invitation/invite/$', 'itfprofiles.views.friend_invite'), (r'^invitation/invite/$', 'itfprofiles.views.friend_invite'),
) )