admin.py
=======
from django.contrib import admin
from . import models
class PerDiemInline(admin.StackedInline):
model = models.PerDiem
class AccountInline(admin.StackedInline):
model = models.Account
class RequestAdmin(admin.ModelAdmin):
list_display = ('requested_by', 'department', 'date_submitted',
'travel_start', 'travel_end',)
list_filter = ('department',)
inlines = (PerDiemInline, AccountInline)
class ApprovalAdmin(admin.ModelAdmin):
list_display = ('request', 'approved_by', 'approved_at', 'approved')
list_filter = ('approved', 'approved_by')
class FinalApprovalAdmin(admin.ModelAdmin):
list_display = ('request', 'approved_by', 'approved_at', 'approved')
list_filter = ('approved', 'approved_by')
admin.site.register(models.Request, RequestAdmin)
admin.site.register(models.Approval, ApprovalAdmin)
admin.site.register(models.FinalApproval, FinalApprovalAdmin)
=======
models.py
=======
from django.db import models
from django.db.models import Q
import datetime
from maysnet.directory.models import Employee, Department
class Request(models.Model):
requested_by = models.ForeignKey(Employee,
related_name="foreigntravel_requester")
department = models.ForeignKey(Department,
related_name="foreigntravel_targetdepartment")
no_travel_warning = models.BooleanField()
cibs_name = models.CharField("Name", max_length=100, blank=True,
null=True)
cibs_title = models.CharField("Title", max_length=100, blank=True,
null=True)
cibs_organization = models.CharField("Funding Organization",
max_length=100, blank=True, null=True)
teacher = models.BooleanField()
substitute_teacher = models.CharField("Teaching Duties Covered By",
max_length=100, blank=True)
destination = models.CharField(max_length=100)
travel_start = models.DateField(default=datetime.date.today() +
datetime.timedelta(days=10))
travel_end = models.DateField(default=datetime.date.today() +
datetime.timedelta(days=10))
purpose = models.TextField("Purpose of Travel")
benefit = models.TextField("Benefit to")
airfare = models.DecimalField(max_digits=7, decimal_places=2,
blank=True, null=True, default=0)
ground_transportation = models.DecimalField(max_digits=7,
decimal_places=2, blank=True, null=True, default=0)
registration_fee = models.DecimalField(max_digits=7,
decimal_places=2, blank=True, null=True, default=0)
meals = models.DecimalField(max_digits=7, decimal_places=2,
blank=True, null=True, default=0)
lodging = models.DecimalField(max_digits=7, decimal_places=2,
blank=True, null=True, default=0)
comments = models.TextField(null=True, blank=True)
date_submitted = models.DateField(auto_now_add=True)
send_to = models.ForeignKey(Employee, verbose_name="Department Head",
related_name="foreigntravel_requestrecipient")
def __unicode__(self):
return self.requested_by.__unicode__() + " - " +
self.date_submitted.strftime("%m/%d/%Y")
def status(self):
try:
self.approval
except:
return "Pending Approval"
try:
self.finalapproval
except:
if self.approval.approved:
return "Pending Final Approval"
else:
return "Denied"
if self.finalapproval.approved:
return "Approved"
else:
return "Denied"
class Meta:
ordering = ["-date_submitted"]
permissions = (
("approve_foreigntravel", "Can approve foreign travel"),
("finalapprove_foreigntravel", "Can give final approval
for foreign
travel"),
("view_request", "Can view department foreign travel"),
)
class PerDiem(models.Model):
request = models.ForeignKey(Request)
city = models.CharField(max_length=50)
lodging = models.DecimalField(max_digits=7, decimal_places=2)
meals = models.DecimalField(max_digits=7, decimal_places=2)
order = models.IntegerField(default=1)
def __unicode__(self):
return self.city
class Meta:
ordering = ["-request", "order"]
class Account(models.Model):
request = models.ForeignKey(Request)
number = models.IntegerField()
name = models.CharField(max_length=50)
amount = models.DecimalField(max_digits=7, decimal_places=2)
def __unicode__(self):
return self.number.__unicode__()
class Meta:
ordering = ["-request", "number"]
class Approval(models.Model):
request = models.OneToOneField(Request)
approved_by = models.ForeignKey(
Employee,
related_name="foreigntravel_approver",
limit_choices_to=Q
(user_permissions__codename="approve_foreigntravel")|Q
(groups__permissions__codename="approve_foreigntravel")
)
approved_at = models.DateField(auto_now_add=True)
approved = models.BooleanField()
comment = models.TextField(blank=True, null=True)
def __unicode__(self):
return self.approved_at.strftime("%m/%d/%Y")
class Meta:
ordering = ["-approved_at"]
class FinalApproval(models.Model):
request = models.OneToOneField(Request)
approved_by = models.ForeignKey(
Employee,
related_name="foreigntravel_finalapprover",
limit_choices_to=Q
(user_permissions__codename="finalapprove_foreigntravel")|Q
(groups__permissions__codename="finalapprove_foreigntravel")
)
approved_at = models.DateField(auto_now_add=True)
approved = models.BooleanField()
comment = models.TextField(blank=True, null=True)
def __unicode__(self):
return self.approved_at.strftime("%m/%d/%Y")
class Meta:
ordering = ["-approved_at"]
class Option(models.Model):
name = models.CharField(max_length=100)
verbose_name = models.CharField(max_length=100)
value = models.CharField(max_length=100)
def __unicode__(self):
return self.verbose_name
class Meta:
ordering = ['name']
=======
Here is the debug email I get when it throws the error...
=======
Subject: [Django] Error (EXTERNAL IP): /admin/foreigntravel/
finalapproval/270/
Traceback (most recent call last):
File "/usr/local/lib64/python2.5/site-packages/django/core/handlers/
base.py", line 92, in get_response
response = callback(request, *callback_args, **callback_kwargs)
File "/usr/local/lib64/python2.5/site-packages/django/contrib/admin/
options.py", line 226, in wrapper
return self.admin_site.admin_view(view)(*args, **kwargs)
File "/usr/local/lib64/python2.5/site-packages/django/views/
decorators/cache.py", line 44, in _wrapped_view_func
response = view_func(request, *args, **kwargs)
File "/usr/local/lib64/python2.5/site-packages/django/contrib/admin/
sites.py", line 186, in inner
return view(request, *args, **kwargs)
File "/usr/local/lib64/python2.5/site-packages/django/db/
transaction.py", line 240, in _commit_on_success
res = func(*args, **kw)
File "/usr/local/lib64/python2.5/site-packages/django/contrib/admin/
options.py", line 873, in change_view
return self.render_change_form(request, context, change=True,
obj=obj)
File "/usr/local/lib64/python2.5/site-packages/django/contrib/admin/
options.py", line 590, in render_change_form
], context, context_instance=context_instance)
File "/usr/local/lib64/python2.5/site-packages/django/shortcuts/
__init__.py", line 20, in render_to_response
return HttpResponse(loader.render_to_string(*args, **kwargs),
**httpresponse_kwargs)
File "/usr/local/lib64/python2.5/site-packages/django/template/
loader.py", line 108, in render_to_string
return t.render(context_instance)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 178, in render
return self.nodelist.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 779, in render
bits.append(self.render_node(node, context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node
return node.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
loader_tags.py", line 97, in render
return compiled_parent.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 178, in render
return self.nodelist.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 779, in render
bits.append(self.render_node(node, context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node
return node.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
loader_tags.py", line 97, in render
return compiled_parent.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 178, in render
return self.nodelist.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 779, in render
bits.append(self.render_node(node, context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node
return node.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
loader_tags.py", line 24, in render
result = self.nodelist.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 779, in render
bits.append(self.render_node(node, context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node
return node.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
defaulttags.py", line 155, in render
nodelist.append(node.render(context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
loader_tags.py", line 111, in render
return self.template.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 178, in render
return self.nodelist.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 779, in render
bits.append(self.render_node(node, context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node
return node.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
defaulttags.py", line 155, in render
nodelist.append(node.render(context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
defaulttags.py", line 155, in render
nodelist.append(node.render(context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
defaulttags.py", line 244, in render
return self.nodelist_false.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 779, in render
bits.append(self.render_node(node, context))
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 792, in render_node
return node.render(context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 831, in render
return _render_value_in_context(output, context)
File "/usr/local/lib64/python2.5/site-packages/django/template/
__init__.py", line 811, in _render_value_in_context
value = force_unicode(value)
File "/usr/local/lib64/python2.5/site-packages/django/utils/
encoding.py", line 71, in force_unicode
s = unicode(s)
File "/usr/local/lib64/python2.5/site-packages/django/forms/
forms.py", line 356, in __unicode__
return self.as_widget()
File "/usr/local/lib64/python2.5/site-packages/django/forms/
forms.py", line 391, in as_widget
return widget.render(name, data, attrs=attrs)
File "/usr/local/lib64/python2.5/site-packages/django/contrib/admin/
widgets.py", line 231, in render
output = [self.widget.render(name, value, *args, **kwargs)]
File "/usr/local/lib64/python2.5/site-packages/django/forms/
widgets.py", line 404, in render
options = self.render_options(choices, [value])
File "/usr/local/lib64/python2.5/site-packages/django/forms/
widgets.py", line 420, in render_options
for option_value, option_label in chain(self.choices, choices):
File "/usr/local/lib64/python2.5/site-packages/django/forms/
models.py", line 915, in __iter__
yield self.choice(obj)
File "/usr/local/lib64/python2.5/site-packages/django/forms/
models.py", line 922, in choice
return (key, self.field.label_from_instance(obj))
File "/usr/local/lib64/python2.5/site-packages/django/forms/
models.py", line 968, in label_from_instance
return smart_unicode(obj)
File "/usr/local/lib64/python2.5/site-packages/django/utils/
encoding.py", line 44, in smart_unicode
return force_unicode(s, encoding, strings_only, errors)
File "/usr/local/lib64/python2.5/site-packages/django/utils/
encoding.py", line 71, in force_unicode
s = unicode(s)
File "/srv/www/django/maysnet/forms/foreigntravel/models.py", line
30, in __unicode__
return self.requested_by.__unicode__() + " - " +
self.date_submitted.strftime("%m/%d/%Y")
File "/usr/local/lib64/python2.5/site-packages/django/db/models/
fields/related.py", line 257, in __get__
rel_obj = QuerySet(self.field.rel.to).get(**params)
File "/usr/local/lib64/python2.5/site-packages/django/db/models/
query.py", line 305, in get
% self.model._meta.object_name)
DoesNotExist: Employee matching query does not exist.
<ModPythonRequest
path:/admin/foreigntravel/finalapproval/270/,
GET:<QueryDict: {}>,
POST:<QueryDict: {}>,
COOKIES:{'__utma':
'99535361.1811631547.1260301450.1261455156.1261457264.12',
'__utmz': '99535361.1260301450.1.1.utmcsr=(direct)|utmccn=(direct)|
utmcmd=(none)',
'sessionid': '5a82d41a929af9a384cd1e618a5db584'},
META:{'AUTH_TYPE': None,
'CONTENT_LENGTH': 0,
'CONTENT_TYPE': None,
'GATEWAY_INTERFACE': 'CGI/1.1',
'HTTP_ACCEPT': 'application/xml,application/xhtml+xml,text/
html;q=0.9,text/plain;q=0.8,image/png,*/*;q=0.5',
'HTTP_ACCEPT_CHARSET': 'ISO-8859-1,utf-8;q=0.7,*;q=0.3',
'HTTP_ACCEPT_ENCODING': 'gzip,deflate',
'HTTP_ACCEPT_LANGUAGE': 'en-US,en;q=0.8',
'HTTP_CONNECTION': 'keep-alive',
'HTTP_COOKIE': '__utmz=99535361.1260301450.1.1.utmcsr=(direct)|utmccn=
(direct)|utmcmd=(none);
__utma=99535361.1811631547.1260301450.1261455156.1261457264.12;
sessionid=5a82d41a929af9a384cd1e618a5db584',
'HTTP_REFERER': 'https://securemays.tamu.edu/admin/foreigntravel/
finalapproval/',
'HTTP_USER_AGENT': 'Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2;
en-US) AppleWebKit/532.8 (KHTML, like Gecko) Chrome/4.0.288.1 Safari/
532.8',
'PATH_INFO': u'/admin/foreigntravel/finalapproval/270/',
'PATH_TRANSLATED': None,
'QUERY_STRING': None,
'REMOTE_HOST': None,
'REMOTE_IDENT': None,
'REMOTE_USER': None,
'REQUEST_METHOD': 'GET',
'SCRIPT_NAME': '',
'SERVER_PORT': 443,
'SERVER_PROTOCOL': 'HTTP/1.1',
'SERVER_SOFTWARE': 'mod_python'}>
=======
...also, this only happens with the approval and final_approval
models...the request model works fine and shows the details with no
problem.
--
You received this message because you are subscribed to the Google Groups
"Django users" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/django-users?hl=en.