2022-01-29 14:51:59 -06:00
|
|
|
# -*- coding: utf-8; -*-
|
|
|
|
################################################################################
|
|
|
|
#
|
|
|
|
# Rattail -- Retail Software Framework
|
2023-01-18 13:11:26 -06:00
|
|
|
# Copyright © 2010-2023 Lance Edgar
|
2022-01-29 14:51:59 -06:00
|
|
|
#
|
|
|
|
# This file is part of Rattail.
|
|
|
|
#
|
|
|
|
# Rattail is free software: you can redistribute it and/or modify it under the
|
|
|
|
# terms of the GNU General Public License as published by the Free Software
|
|
|
|
# Foundation, either version 3 of the License, or (at your option) any later
|
|
|
|
# version.
|
|
|
|
#
|
|
|
|
# Rattail is distributed in the hope that it will be useful, but WITHOUT ANY
|
|
|
|
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
|
|
|
|
# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
|
|
|
|
# details.
|
|
|
|
#
|
|
|
|
# You should have received a copy of the GNU General Public License along with
|
|
|
|
# Rattail. If not, see <http://www.gnu.org/licenses/>.
|
|
|
|
#
|
|
|
|
################################################################################
|
|
|
|
"""
|
|
|
|
Harvest master view
|
|
|
|
"""
|
|
|
|
|
2023-10-04 15:56:02 -05:00
|
|
|
from rattail_harvest.db.model import HarvestCacheTimeEntry
|
2022-01-29 19:36:17 -06:00
|
|
|
|
2022-03-09 19:43:18 -06:00
|
|
|
from webhelpers2.html import tags
|
|
|
|
|
2022-01-29 14:51:59 -06:00
|
|
|
from tailbone.views import MasterView
|
|
|
|
|
|
|
|
|
|
|
|
class HarvestMasterView(MasterView):
|
|
|
|
"""
|
|
|
|
Base class for Harvest master views
|
|
|
|
"""
|
|
|
|
creatable = False
|
2023-01-18 13:11:26 -06:00
|
|
|
touchable = True
|
2022-01-29 14:51:59 -06:00
|
|
|
has_versions = True
|
2023-10-04 15:56:02 -05:00
|
|
|
model_row_class = HarvestCacheTimeEntry
|
2022-01-29 14:51:59 -06:00
|
|
|
|
|
|
|
labels = {
|
|
|
|
'id': "ID",
|
2022-01-30 12:38:15 -06:00
|
|
|
'user_id': "User ID",
|
|
|
|
'client_id': "Client ID",
|
|
|
|
'project_id': "Project ID",
|
|
|
|
'task_id': "Task ID",
|
|
|
|
'invoice_id': "Invoice ID",
|
2022-01-29 14:51:59 -06:00
|
|
|
}
|
2022-01-29 19:36:17 -06:00
|
|
|
|
|
|
|
row_labels = {
|
|
|
|
'id': "ID",
|
|
|
|
}
|
|
|
|
|
|
|
|
def configure_form(self, f):
|
|
|
|
super(HarvestMasterView, self).configure_form(f)
|
|
|
|
f.remove('time_entries')
|
|
|
|
|
2022-03-09 19:43:18 -06:00
|
|
|
def render_harvest_user(self, obj, field):
|
|
|
|
user = getattr(obj, field)
|
|
|
|
if user:
|
|
|
|
text = str(user)
|
|
|
|
url = self.request.route_url('harvest.users.view', uuid=user.uuid)
|
|
|
|
return tags.link_to(text, url)
|
|
|
|
|
|
|
|
def render_harvest_client(self, obj, field):
|
|
|
|
client = getattr(obj, field)
|
|
|
|
if client:
|
|
|
|
text = str(client)
|
|
|
|
url = self.request.route_url('harvest.clients.view', uuid=client.uuid)
|
|
|
|
return tags.link_to(text, url)
|
|
|
|
|
|
|
|
def render_harvest_project(self, obj, field):
|
|
|
|
project = getattr(obj, field)
|
|
|
|
if project:
|
|
|
|
text = str(project)
|
|
|
|
url = self.request.route_url('harvest.projects.view', uuid=project.uuid)
|
|
|
|
return tags.link_to(text, url)
|
|
|
|
|
|
|
|
def render_harvest_task(self, obj, field):
|
|
|
|
task = getattr(obj, field)
|
|
|
|
if task:
|
|
|
|
text = str(task)
|
|
|
|
url = self.request.route_url('harvest.tasks.view', uuid=task.uuid)
|
|
|
|
return tags.link_to(text, url)
|
|
|
|
|
2022-01-29 19:36:17 -06:00
|
|
|
def configure_row_grid(self, g):
|
|
|
|
super(HarvestMasterView, self).configure_row_grid(g)
|
|
|
|
g.set_sort_defaults('spent_date', 'desc')
|
|
|
|
|
|
|
|
def row_view_action_url(self, entry, i):
|
|
|
|
return self.request.route_url('harvest.time_entries.view', uuid=entry.uuid)
|