Media main parts complete
svn: r19656
This commit is contained in:
@@ -163,3 +163,39 @@ class NoteForm(forms.ModelForm):
|
||||
model = Note
|
||||
exclude = ["handle"]
|
||||
|
||||
class MediaForm(forms.ModelForm):
|
||||
class Meta:
|
||||
model = Media
|
||||
exclude = ["handle", "sortval", "month1", "year1", "day1",
|
||||
"newyear", "calendar", "modifier", "quality"]
|
||||
|
||||
def clean(self):
|
||||
from webapp.utils import dp
|
||||
data = super(MediaForm, self).clean()
|
||||
dobj = dp(data.get('text'))
|
||||
if not dobj.is_valid():
|
||||
msg = u"Invalid date format"
|
||||
self._errors["date"] = self.error_class([msg])
|
||||
del data["text"]
|
||||
return data
|
||||
|
||||
def save(self, commit=True):
|
||||
from webapp.utils import dp
|
||||
from webapp.libdjango import DjangoInterface
|
||||
dji = DjangoInterface()
|
||||
model = super(MediaForm, self).save(commit=False)
|
||||
dobj = dp(self.cleaned_data['text'])
|
||||
dji.add_date(model, dobj.serialize())
|
||||
if commit:
|
||||
model.save()
|
||||
return model
|
||||
|
||||
text = forms.CharField(label="Date",
|
||||
required=False,
|
||||
widget=TextInput(attrs={'size':'70'}))
|
||||
desc = forms.CharField(label="Title",
|
||||
required=False,
|
||||
widget=TextInput(attrs={'size':'70'}))
|
||||
path = forms.CharField(label="Path",
|
||||
required=False,
|
||||
widget=TextInput(attrs={'size':'70'}))
|
||||
|
||||
@@ -413,7 +413,7 @@ class PrimaryObject(models.Model):
|
||||
## Fields:
|
||||
id = models.AutoField(primary_key=True)
|
||||
handle = models.CharField(max_length=19, unique=True)
|
||||
gramps_id = models.CharField('gramps id', max_length=25, blank=True)
|
||||
gramps_id = models.CharField('ID', max_length=25, blank=True)
|
||||
last_saved = models.DateTimeField('last changed', auto_now=True)
|
||||
last_changed = models.DateTimeField('last changed', null=True,
|
||||
blank=True) # user edits
|
||||
@@ -431,7 +431,7 @@ class Person(PrimaryObject):
|
||||
"""
|
||||
The model for the person object
|
||||
"""
|
||||
gender_type = models.ForeignKey('GenderType')
|
||||
gender_type = models.ForeignKey('GenderType', verbose_name="Gender")
|
||||
probably_alive = models.BooleanField("Probably alive")
|
||||
families = models.ManyToManyField('Family', blank=True, null=True)
|
||||
parent_families = models.ManyToManyField('Family',
|
||||
@@ -475,7 +475,7 @@ class Family(PrimaryObject):
|
||||
null=True, blank=True)
|
||||
mother = models.ForeignKey('Person', related_name="mother_ref",
|
||||
null=True, blank=True)
|
||||
family_rel_type = models.ForeignKey('FamilyRelType')
|
||||
family_rel_type = models.ForeignKey('FamilyRelType', verbose_name="Type")
|
||||
tags = models.ManyToManyField('Tag', blank=True, null=True)
|
||||
|
||||
def make_tag_list(self):
|
||||
@@ -515,7 +515,7 @@ class Source(PrimaryObject):
|
||||
# .datamap_set
|
||||
|
||||
class Event(DateObject, PrimaryObject):
|
||||
event_type = models.ForeignKey('EventType')
|
||||
event_type = models.ForeignKey('EventType', verbose_name="Type")
|
||||
description = models.CharField('description', max_length=50, blank=True)
|
||||
place = models.ForeignKey('Place', null=True, blank=True)
|
||||
references = generic.GenericRelation('EventRef', related_name="refs",
|
||||
@@ -549,7 +549,7 @@ class Place(PrimaryObject):
|
||||
class Media(DateObject, PrimaryObject):
|
||||
path = models.TextField(blank=True)
|
||||
mime = models.TextField(blank=True, null=True)
|
||||
desc = models.TextField(blank=True)
|
||||
desc = models.TextField("Title", blank=True)
|
||||
references = generic.GenericRelation('MediaRef', related_name="refs",
|
||||
content_type_field="object_type",
|
||||
object_id_field="object_id")
|
||||
@@ -559,7 +559,7 @@ class Media(DateObject, PrimaryObject):
|
||||
return tuple()
|
||||
|
||||
class Note(PrimaryObject):
|
||||
note_type = models.ForeignKey('NoteType')
|
||||
note_type = models.ForeignKey('NoteType', verbose_name="Type")
|
||||
text = models.TextField(blank=True)
|
||||
preformatted = models.BooleanField('preformatted')
|
||||
references = generic.GenericRelation('NoteRef', related_name="refs",
|
||||
@@ -595,6 +595,7 @@ class Surname(models.Model):
|
||||
Surname table, which links to name.
|
||||
"""
|
||||
name_origin_type = models.ForeignKey('NameOriginType',
|
||||
verbose_name="Origin",
|
||||
related_name="name_origin_code",
|
||||
default=2)
|
||||
surname = models.TextField(blank=True)
|
||||
@@ -608,7 +609,7 @@ class Surname(models.Model):
|
||||
return "%s" % self.surname
|
||||
|
||||
class Name(DateObject, SecondaryObject):
|
||||
name_type = models.ForeignKey('NameType',
|
||||
name_type = models.ForeignKey('NameType', verbose_name="Type",
|
||||
related_name="name_code",
|
||||
default=2)
|
||||
preferred = models.BooleanField('Preferred name?')
|
||||
|
||||
@@ -22,7 +22,7 @@
|
||||
""" Views for Person, Name, and Surname """
|
||||
|
||||
## Gramps Modules
|
||||
from webapp.utils import _, boolean
|
||||
from webapp.utils import _, boolean, update_last_changed
|
||||
from webapp.grampsdb.models import Media
|
||||
from webapp.grampsdb.forms import *
|
||||
from webapp.libdjango import DjangoInterface
|
||||
@@ -41,88 +41,54 @@ def process_media(request, context, handle, action): # view, edit, save
|
||||
context["tview"] = _("Media")
|
||||
context["tviews"] = _("Media")
|
||||
context["action"] = "view"
|
||||
context["object"] = Media()
|
||||
view_template = "view_media_detail.html"
|
||||
|
||||
return render_to_response(view_template, context)
|
||||
if request.user.is_authenticated():
|
||||
if action in ["edit", "view"]:
|
||||
pf, nf, sf, person = get_person_forms(handle, empty=False)
|
||||
elif action == "add":
|
||||
pf, nf, sf, person = get_person_forms(handle=None, protect=False, empty=True)
|
||||
elif action == "delete":
|
||||
pf, nf, sf, person = get_person_forms(handle, protect=False, empty=True)
|
||||
person.delete()
|
||||
return redirect("/person/")
|
||||
elif action in ["save", "create"]: # could be create a new person
|
||||
# look up old data, if any:
|
||||
if handle:
|
||||
person = Person.objects.get(handle=handle)
|
||||
name = person.name_set.get(preferred=True)
|
||||
surname = name.surname_set.get(primary=True)
|
||||
else: # create new item
|
||||
person = Person(handle=create_id())
|
||||
name = Name(person=person, preferred=True)
|
||||
surname = Surname(name=name, primary=True, order=1)
|
||||
surname = Surname(name=name,
|
||||
primary=True,
|
||||
order=1,
|
||||
name_origin_type=NameOriginType.objects.get(val=NameOriginType._DEFAULT[0]))
|
||||
# combine with user data:
|
||||
pf = PersonForm(request.POST, instance=person)
|
||||
pf.model = person
|
||||
nf = NameFormFromPerson(request.POST, instance=name)
|
||||
nf.model = name
|
||||
sf = SurnameForm(request.POST, instance=surname)
|
||||
# check if valid:
|
||||
if nf.is_valid() and pf.is_valid() and sf.is_valid():
|
||||
# name.preferred and surname.primary get set False in the above is_valid()
|
||||
person = pf.save()
|
||||
# Process data:
|
||||
name.person = person
|
||||
name = nf.save(commit=False)
|
||||
# Manually set any data:
|
||||
name.suffix = nf.cleaned_data["suffix"] if nf.cleaned_data["suffix"] != " suffix " else ""
|
||||
name.preferred = True # FIXME: why is this False?
|
||||
check_preferred(name, person)
|
||||
name.save()
|
||||
# Process data:
|
||||
surname.name = name
|
||||
surname = sf.save(commit=False)
|
||||
# Manually set any data:
|
||||
surname.prefix = sf.cleaned_data["prefix"] if sf.cleaned_data["prefix"] != " prefix " else ""
|
||||
surname.primary = True # FIXME: why is this False?
|
||||
surname.save()
|
||||
# FIXME: last_saved, last_changed, last_changed_by
|
||||
dji.rebuild_cache(person)
|
||||
# FIXME: update probably_alive
|
||||
return redirect("/person/%s" % person.handle)
|
||||
else:
|
||||
# need to edit again
|
||||
if handle:
|
||||
action = "edit"
|
||||
else:
|
||||
action = "add"
|
||||
else: # error?
|
||||
raise Http404(_("Requested %s does not exist.") % "person")
|
||||
else: # not authenticated
|
||||
# BEGIN NON-AUTHENTICATED ACCESS
|
||||
try:
|
||||
person = Person.objects.get(handle=handle)
|
||||
except:
|
||||
raise Http404(_("Requested %s does not exist.") % "person")
|
||||
if person.private:
|
||||
raise Http404(_("Requested %s does not exist.") % "person")
|
||||
pf, nf, sf, person = get_person_forms(handle, protect=True)
|
||||
# END NON-AUTHENTICATED ACCESS
|
||||
context["action"] = action
|
||||
context["view"] = "person"
|
||||
context["tview"] = _("Person")
|
||||
context["tviews"] = _("People")
|
||||
context["personform"] = pf
|
||||
context["nameform"] = nf
|
||||
context["surnameform"] = sf
|
||||
context["person"] = person
|
||||
context["object"] = person
|
||||
context["next"] = "/person/%s" % person.handle
|
||||
if handle == "add":
|
||||
action = "add"
|
||||
if request.POST.has_key("action"):
|
||||
action = request.POST.get("action")
|
||||
|
||||
# Handle: edit, view, add, create, save, delete
|
||||
if action == "add":
|
||||
media = Media()
|
||||
mediaform = MediaForm(instance=media)
|
||||
mediaform.model = media
|
||||
elif action in ["view", "edit"]:
|
||||
media = Media.objects.get(handle=handle)
|
||||
mediaform = MediaForm(instance=media)
|
||||
mediaform.model = media
|
||||
elif action == "save":
|
||||
media = Media.objects.get(handle=handle)
|
||||
mediaform = MediaForm(request.POST, instance=media)
|
||||
mediaform.model = media
|
||||
if mediaform.is_valid():
|
||||
update_last_changed(media, request.user.username)
|
||||
media = mediaform.save()
|
||||
dji.rebuild_cache(media)
|
||||
action = "view"
|
||||
else:
|
||||
action = "edit"
|
||||
elif action == "create":
|
||||
media = Media(handle=create_id())
|
||||
mediaform = MediaForm(request.POST, instance=media)
|
||||
mediaform.model = media
|
||||
if mediaform.is_valid():
|
||||
update_last_changed(media, request.user.username)
|
||||
media = mediaform.save()
|
||||
dji.rebuild_cache(media)
|
||||
action = "view"
|
||||
else:
|
||||
action = "add"
|
||||
elif action == "delete":
|
||||
media = Media.objects.get(handle=handle)
|
||||
media.delete()
|
||||
return redirect("/media/")
|
||||
else:
|
||||
raise Exception("Unhandled action: '%s'" % action)
|
||||
|
||||
context["mediaform"] = mediaform
|
||||
context["object"] = media
|
||||
context["media"] = media
|
||||
context["action"] = action
|
||||
|
||||
return render_to_response(view_template, context)
|
||||
|
||||
Reference in New Issue
Block a user