make per item document info editable if user can edit item

This commit is contained in:
j 2014-04-17 19:32:30 +00:00
parent c19f80f2e5
commit df44b0daf4
4 changed files with 11 additions and 6 deletions

View File

@ -98,12 +98,13 @@ class Document(models.Model):
def get_id(self):
return ox.toAZ(self.id)
def editable(self, user):
def editable(self, user, item=None):
if not user or user.is_anonymous():
return False
if self.user == user or \
user.is_staff or \
user.get_profile().capability('canEditDocuments') == True:
user.get_profile().capability('canEditDocuments') == True or \
(item and item.editable(user)):
return True
return False

View File

@ -82,8 +82,8 @@ def editDocument(request):
item = 'item' in data and Item.objects.get(itemId=data['item']) or None
if data['id']:
document = models.Document.get(data['id'])
if document.editable(request.user):
document.edit(data, request.user, item=item)
if document.editable(request.user, item):
document.edit(data, request.user, item)
document.save()
response['data'] = document.json(user=request.user, item=item)
else:

View File

@ -520,7 +520,8 @@ pandora.ui.documentsPanel = function(options) {
var $name, $description,
item = $list.value($list.options('selected')[0]),
editable = item.user == pandora.user.username
|| pandora.site.capabilities.canEditDocuments[pandora.user.level],
|| pandora.site.capabilities.canEditDocuments[pandora.user.level]
|| options.editable,
labelWidth = 80,
width = ui.documentSize - 16 - Ox.UI.SCROLLBAR_SIZE;
return isItemView

View File

@ -68,7 +68,10 @@ pandora.ui.item = function() {
} else if (pandora.user.ui.itemView == 'documents') {
pandora.$ui.contentPanel.replaceElement(1,
pandora.$ui.documents = pandora.ui.documentsPanel({isItemView: true})
pandora.$ui.documents = pandora.ui.documentsPanel({
editable: result.data.editable,
isItemView: true
})
);
} else if (pandora.user.ui.itemView == 'player') {