test profile form + padma video
This commit is contained in:
parent
c28f903df0
commit
795c65a999
|
@ -56,7 +56,9 @@ class ItfModel(models.Model):
|
|||
return {}
|
||||
|
||||
def info_dict(self):
|
||||
return self.get_dict()
|
||||
d = self.get_dict()
|
||||
d['add_form'] = self.__class__.get_add_form()
|
||||
return d
|
||||
|
||||
def get_title(self):
|
||||
return self.get(self.title_field)
|
||||
|
@ -66,6 +68,7 @@ class ItfModel(models.Model):
|
|||
tab = ModuleTab.objects.filter(model=modelextra)[0]
|
||||
return tab
|
||||
|
||||
#TODO: Get rid off and use .get_forms() instead
|
||||
@classmethod
|
||||
def get_add_form(cls):
|
||||
try:
|
||||
|
@ -78,6 +81,20 @@ class ItfModel(models.Model):
|
|||
except:
|
||||
return None
|
||||
|
||||
@classmethod
|
||||
def get_forms(cls):
|
||||
|
||||
def get_form(form_name):
|
||||
app_label = cls._meta.app_label
|
||||
module = __import__(app_label + ".forms")
|
||||
return module.forms.__getattribute__(form_name)
|
||||
|
||||
ret = {}
|
||||
for form_name in cls.form_names:
|
||||
ret[form_name] = get_form(form_name)
|
||||
return ret
|
||||
|
||||
|
||||
|
||||
def get_modelextra(self):
|
||||
try:
|
||||
|
|
|
@ -11,6 +11,9 @@ GENDER_CHOICES = (
|
|||
)
|
||||
|
||||
class Person(models.Model):
|
||||
#ItfModel Stuff:
|
||||
form_names = ['PersonForm']
|
||||
fts_fields = ['first_name', 'last_name', 'email', 'about']
|
||||
|
||||
#Basic Info
|
||||
user = models.ForeignKey(User, blank=True, null=True, db_index=True)
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
from django import forms
|
||||
import floppyforms as forms
|
||||
from registration.forms import RegistrationForm
|
||||
from models import ItfProfile
|
||||
from models import *
|
||||
from registration.models import RegistrationProfile
|
||||
|
||||
class ItfRegistrationForm(RegistrationForm):
|
||||
|
@ -11,3 +11,22 @@ class ItfRegistrationForm(RegistrationForm):
|
|||
new_profile = ItfProfile(user=new_user, subscribed=self.cleaned_data['subscribe'])
|
||||
new_profile.save()
|
||||
return new_user
|
||||
|
||||
|
||||
|
||||
#Actual person form definition
|
||||
class PersonForm(forms.ModelForm):
|
||||
# occupations = forms.ModelMultipleChoiceField(Occupation.objects.all(), widget=forms.CheckboxSelectMultiple())
|
||||
email = forms.EmailField(widget=forms.EmailInput(attrs={'placeholder': 'john@example.com'}))
|
||||
|
||||
# inlines = [ConnectionFormset, ProductionFormset]
|
||||
class Meta:
|
||||
model = Person
|
||||
widgets = {
|
||||
'first_name': forms.TextInput,
|
||||
'last_name': forms.TextInput,
|
||||
'occupations': forms.CheckboxSelectMultiple
|
||||
}
|
||||
# exclude = ('connections', 'productions')
|
||||
|
||||
|
||||
|
|
|
@ -1,13 +1,172 @@
|
|||
from django.db import models
|
||||
from app.models import ItfModel
|
||||
from django.contrib.auth.models import User
|
||||
from datetime import datetime
|
||||
from django.contrib.localflavor.in_.forms import INZipCodeField
|
||||
#from ox.django.fields import DictField
|
||||
|
||||
GENDER_CHOICES = (
|
||||
('M', 'Male'),
|
||||
('F', 'Female'),
|
||||
('O', 'Other'),
|
||||
)
|
||||
|
||||
class Person(ItfModel):
|
||||
#ItfModel stuff:
|
||||
form_names = ['PersonForm']
|
||||
fts_fields = ['first_name', 'last_name', 'email', 'about']
|
||||
#Basic Info
|
||||
user = models.ForeignKey(User, blank=True, null=True, db_index=True, editable=False)
|
||||
first_name = models.CharField(max_length=255)
|
||||
last_name = models.CharField(max_length=255)
|
||||
email = models.EmailField(blank=True, null=True, unique=True, db_index=True)
|
||||
email_validated = models.BooleanField(default=False, editable=False)
|
||||
tel_no = models.CharField(max_length=100, blank=True)
|
||||
about = models.TextField(blank=True, null=True)
|
||||
|
||||
#Occupation info
|
||||
occupations = models.ManyToManyField("Occupation", through='PersonOccupation', blank=True, null=True)
|
||||
is_practitioner = models.BooleanField(default=False)
|
||||
is_enthusiast = models.BooleanField(default=True)
|
||||
|
||||
#Personal info
|
||||
dob = models.DateField(null=True, verbose_name="Date of Birth")
|
||||
gender = models.CharField(max_length=255, choices=GENDER_CHOICES, blank=True)
|
||||
image = models.ImageField(upload_to='images/', blank=True, null=True)
|
||||
locations = models.ManyToManyField("Location", blank=True, null=True)
|
||||
|
||||
#Groups and Connections
|
||||
is_freelancer = models.BooleanField(default=False)
|
||||
groups = models.ManyToManyField("TheatreGroup", blank=True, null=True, through='PersonGroup')
|
||||
connections = models.ManyToManyField('Person', blank=True, null=True, through='PersonPerson')
|
||||
productions = models.ManyToManyField("Production", blank=True, null=True, through='PersonProduction')
|
||||
trainings = models.ManyToManyField("Training", blank=True, null=True, related_name="trainee")
|
||||
# photos = models.ManyToManyField("PhotoAlbum", blank=True, null=True)
|
||||
# orphans = models.ManyToManyField("Orphan", blank=True, null=True, through='PersonOrphan')
|
||||
|
||||
#Meta
|
||||
last_accessed = models.DateTimeField(default=datetime.now)
|
||||
|
||||
#Tokens
|
||||
reset_token = models.CharField(max_length=256, null=True, editable=False)
|
||||
validate_token = models.CharField(max_length=256, null=True, editable=False)
|
||||
|
||||
|
||||
def __unicode__(self):
|
||||
return "%s %s" % (self.first_name, self.last_name,)
|
||||
|
||||
|
||||
|
||||
class ItfProfile(ItfModel):
|
||||
user = models.ForeignKey(User, null=True)
|
||||
subscribed = models.BooleanField(default=True)
|
||||
class Occupation(models.Model):
|
||||
name = models.CharField(max_length=255)
|
||||
parent = models.ForeignKey('Occupation', blank=True, null=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
def is_child(self):
|
||||
return self.parent != None
|
||||
|
||||
def is_parent(self):
|
||||
if self.is_child():
|
||||
return False
|
||||
else:
|
||||
if Occupation.objects.filter(parent=self).count() > 0: #self has children
|
||||
return True
|
||||
return False
|
||||
|
||||
class PersonOccupation(models.Model):
|
||||
person = models.ForeignKey(Person, db_index=True)
|
||||
occupation = models.ForeignKey(Occupation)
|
||||
order = models.IntegerField()
|
||||
|
||||
|
||||
class PersonPerson(models.Model):
|
||||
person1 = models.ForeignKey(Person, related_name='PersonFrom', db_index=True)
|
||||
person2 = models.ForeignKey(Person, related_name='PersonTo', db_index=True)
|
||||
relation = models.ForeignKey("Relation")
|
||||
disapproved = models.BooleanField(default=False)
|
||||
|
||||
class Relation(models.Model):
|
||||
name = models.CharField(max_length=255, db_index=True)
|
||||
reverse = models.CharField(max_length=255, db_index=True)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
class Location(models.Model):
|
||||
address = models.TextField(blank=True, null=True)
|
||||
city = models.CharField(blank=True, max_length=255, db_index=True)
|
||||
pin_code = INZipCodeField()
|
||||
lat = models.FloatField(blank=True, null=True)
|
||||
lng = models.FloatField(blank=True, null=True)
|
||||
|
||||
|
||||
class Training(models.Model):
|
||||
person = models.ForeignKey("Person")
|
||||
area = models.CharField(max_length=255) # Choices?
|
||||
with_whom = models.CharField(max_length=255) # Is this a foreign key to person, or group, or just text field like now?
|
||||
where = models.ForeignKey("TheatreGroup")
|
||||
from_when = models.DateField(blank=True, null=True)
|
||||
until_when = models.DateField(blank=True, null=True)
|
||||
|
||||
|
||||
class Play(ItfModel):
|
||||
title = models.CharField(max_length=512)
|
||||
author = models.CharField(max_length=512, blank=True)
|
||||
year = models.IntegerField(null=True, blank=True, max_length=4)
|
||||
user = models.ForeignKey(User)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.title
|
||||
|
||||
|
||||
class Production(ItfModel):
|
||||
play = models.ForeignKey("Play", null=True, blank=True)
|
||||
name = models.CharField(max_length=255, db_index=True)
|
||||
language = models.ForeignKey("Language", blank=True, null=True)
|
||||
group = models.ForeignKey("TheatreGroup")
|
||||
director = models.ForeignKey(Person)
|
||||
|
||||
SHOWS_NO_CHOICES = (
|
||||
('5', '0-5 Shows'),
|
||||
('10', '6-10 Shows'),
|
||||
('50', '11-50 Shows'),
|
||||
('100', '51-100 Shows'),
|
||||
('1000', 'More Than 100 Shows'),
|
||||
#add more.
|
||||
)
|
||||
|
||||
class PersonProduction(models.Model):
|
||||
person = models.ForeignKey(Person, db_index=True)
|
||||
production = models.ForeignKey(Production, db_index=True)
|
||||
role = models.CharField(max_length=255)
|
||||
start_year = models.IntegerField(max_length=4)
|
||||
years = models.IntegerField(blank=True, null=True)
|
||||
no_of_shows = models.CharField(max_length=25, choices = SHOWS_NO_CHOICES)
|
||||
original_cast = models.BooleanField(default=False)
|
||||
|
||||
class TheatreGroup(ItfModel):
|
||||
name = models.CharField(max_length=255, db_index=True) # name + location is unique
|
||||
city = models.CharField(max_length=255)
|
||||
location = models.ForeignKey(Location, blank=True, null=True)
|
||||
tel = models.IntegerField(blank=True, null=True)
|
||||
email = models.EmailField(blank=True, null=True)
|
||||
about = models.TextField(blank=True, null=True)
|
||||
nature_of_work = models.CharField(max_length=255)
|
||||
founded = models.CharField(max_length=10)
|
||||
|
||||
def __unicode__(self):
|
||||
return self.name
|
||||
|
||||
class PersonGroup(models.Model):
|
||||
person = models.ForeignKey(Person, db_index=True)
|
||||
group = models.ForeignKey(TheatreGroup, db_index=True)
|
||||
is_admin = models.BooleanField(default=False)
|
||||
role = models.CharField(max_length=255, blank=True)
|
||||
|
||||
|
||||
class Language(models.Model):
|
||||
code = models.CharField(max_length=3, db_index=True)
|
||||
name = models.CharField(max_length=255)
|
||||
|
||||
# Create your models here.
|
||||
|
|
|
@ -1 +1,7 @@
|
|||
# Create your views here.
|
||||
from models import *
|
||||
from forms import *
|
||||
from django.shortcuts import render_to_response
|
||||
|
||||
def person_form(request):
|
||||
return render_to_response("test/person_form.html", {'form': PersonForm})
|
|
@ -40,6 +40,10 @@ class PadmaVideo(ItfModel):
|
|||
|
||||
}
|
||||
|
||||
@property
|
||||
def padma_link(self):
|
||||
return "http://%s/%s" % (PANDORA_BASE, self.padma_id,)
|
||||
|
||||
'''
|
||||
def save(self, *args, **kwargs):
|
||||
embed_code = self.embed_code
|
||||
|
|
|
@ -25,6 +25,7 @@ HAYSTACK_SITECONF = 'itf.search_sites'
|
|||
HAYSTACK_SEARCH_ENGINE = 'whoosh'
|
||||
HAYSTACK_WHOOSH_PATH = join(PROJECT_PATH, "../whoosh/itf_index")
|
||||
|
||||
CRISPY_TEMPLATE_PACK = 'uni_form'
|
||||
|
||||
CKEDITOR_MEDIA_PREFIX = "/static/ckeditor/"
|
||||
CKEDITOR_UPLOAD_PATH = join(PROJECT_PATH, "static/upload/images/")
|
||||
|
@ -187,6 +188,8 @@ INSTALLED_APPS = (
|
|||
'django_extensions',
|
||||
'debug_toolbar',
|
||||
'sorl.thumbnail',
|
||||
'crispy_forms',
|
||||
'floppyforms',
|
||||
# 'south',
|
||||
'user',
|
||||
'ckeditor',
|
||||
|
|
|
@ -90,9 +90,9 @@
|
|||
</a>
|
||||
</span>
|
||||
{% endfor %}
|
||||
{% for v in talk.video %}
|
||||
{% for v in talk.videos.all %}
|
||||
<span class="talkIcon">
|
||||
<a href="/static/{{v.file}}">
|
||||
<a href="/static/{{ v.padmavideo.padma_link }}" class="padmaLink" data-video="http://pad.ma/{{ v.padmavideo.padma_id }}/480p.webm" target="_blank">
|
||||
<img src="/static/images/VideoIcon.jpg" title="<span class='ttTitle'>Video: {{ talk.title }}.</span><span class='rightclickHelp'>(Right click and select 'Save Link As' to download)</span>">
|
||||
</a>
|
||||
</span>
|
||||
|
@ -100,16 +100,6 @@
|
|||
</span>
|
||||
{{ talk.title }} by {{ talk.presenter }}
|
||||
|
||||
{% ifnotequal talk.videos.all|length 0 %}
|
||||
<div class="padmaVideos">
|
||||
{% for v in talk.videos.all %}
|
||||
<video controls="controls" src="{{ v.video_src }}" width="480"></video><br />
|
||||
|
||||
|
||||
{% endfor %}
|
||||
</div>
|
||||
{% endifnotequal %}
|
||||
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
@ -252,3 +242,22 @@
|
|||
|
||||
|
||||
</script>
|
||||
|
||||
<script type="text/javascript">
|
||||
(function() {
|
||||
var $video;
|
||||
$('a.padmaLink').toggle(function(e) {
|
||||
e.preventDefault();
|
||||
var videoSrc = $(this).attr("data-video");
|
||||
$video = $('<video>').attr("src", videoSrc).attr("autoplay", "autoplay").attr("controls", "controls").addClass("padmaVideo");
|
||||
$(this).parents('.talks').eq(0).append($video);
|
||||
//console.log("clicked in");
|
||||
}, function(e) {
|
||||
e.preventDefault();
|
||||
//console.log("clicked out");
|
||||
$video.remove();
|
||||
|
||||
});
|
||||
})();
|
||||
</script>
|
||||
|
||||
|
|
15
itf/urls.py
15
itf/urls.py
|
@ -10,8 +10,8 @@ from itfprofiles.forms import ItfRegistrationForm
|
|||
from django.contrib import admin
|
||||
admin.autodiscover()
|
||||
|
||||
from api import actions
|
||||
actions.autodiscover()
|
||||
#from api import actions
|
||||
#actions.autodiscover()
|
||||
|
||||
urlpatterns = patterns('',
|
||||
# Example:
|
||||
|
@ -39,20 +39,11 @@ urlpatterns = patterns('',
|
|||
# Uncomment the admin/doc line below and add 'django.contrib.admindocs'
|
||||
# to INSTALLED_APPS to enable admin documentation:
|
||||
#Core views:
|
||||
# (r'profile', 'itfcore.views.edit_profile'),
|
||||
(r'test_profile', 'itfprofiles.views.person_form'),
|
||||
(r'i/', include('itfcore.urls')),
|
||||
(r'^admin/doc/', include('django.contrib.admindocs.urls')),
|
||||
(r'^search/', include('haystack.urls')),
|
||||
(r'^markitup/', include('markitup.urls')),
|
||||
# (r'^mockup/', 'itfcore.views.mockup'),
|
||||
# (r'x0news/', 'itfcore.views.allnews'),
|
||||
# (r'x0disc/', 'itfcore.views.disc'),
|
||||
# (r'x0multi/', 'itfcore.views.multi'),
|
||||
# (r'x0resources/', 'itfcore.views.resources'),
|
||||
# (r'x0erang/', 'itfcore.views.erang'),
|
||||
# (r'x0profile/', 'itfcore.views.profile'),
|
||||
(r'finalTest/', 'boxes.views.mainPage'),
|
||||
(r'finalInner/', 'boxes.views.innerPage'),
|
||||
(r'googlehostedservice.html', 'itfcore.views.googlehosted'),
|
||||
|
||||
(r'emailsignuplist', 'festival.views.email_signups'),
|
||||
|
|
|
@ -16,3 +16,5 @@ django-registration
|
|||
Whoosh
|
||||
django-haystack
|
||||
Markdown
|
||||
django-crispy-forms
|
||||
django-floppyforms
|
||||
|
|
Loading…
Reference in New Issue
Block a user