In http://groups.google.com/group/trac-dev/msg/828db3da4963ed9a?hl=en, I
got a good pointer to FullBlogPlugin as a model of how to have
conditional dependencies between plugins. I'm now trying to use that
and running into problems understanding what it all means.
I'm trying to add an IResourceCalendar implementation to TeamCalendar so
its database can drive scheduling in Trac-JSGantt. My extra is pretty
simple:
from trac.core import Component, implements
from datetime import date
from tracjsgantt.pmapi import IResourceCalendar
from teamcalendar.calendar import TeamCalendar
class TracPMConnector(Component):
implements(IResourceCalendar)
# IResourceCalendar methods
def __init__(self):
self.teamCalendar = TeamCalendar(self.env)
def hoursAvailable(self, when, resource = None):
# Scheduling works with time of day, Team Calendar is indexed
by days
date = when.date()
# Get the availability for that date.
timetable = self.teamCalendar.get_timetable(date, date, [
resource ])
# Available is 0.0 or 1.0 but could be any fraction of a day
# in the future.
available = timetable[date][resource]
# Assume 8 hours per work day.
hours = available * 8.0
return hours
and my setup.py is modeled on FullBlogPlugin:
from setuptools import setup
setup(
name = 'teamcalendar',
author = 'Martin Aspeli',
author_email = 'optil...@gmail.com',
maintainer = 'Chris Nelson',
maintainer_email = 'chris.nel...@sixnet.com',
description = 'Trac plugin for managing team availability',
version = '0.1',
license='BSD',
packages=['teamcalendar'],
extras_require={
'rescal': 'Trac-jsGantt>=0.10'},
package_data={'teamcalendar': ['templates/*.html',
'htdocs/css/*.css',]},
entry_points = {
'trac.plugins': [
'teamcalendar.calendar = teamcalendar.calendar',
'teamcalendar.resourcecalendar =
teamcalendar.resourcecalender[rescal]'
]
},
install_requires = [
],
)
teamcalendar/__init__.py was:
import calendar
but for my resource calendar to show up in webadmin, I seem to have to add:
import resourcecalendar
but that would fail if TracPM wasn't available, right? How do import my
code conditionally?
Also, I have Trac-jsGantt 0.10 installed but even if I make 'rescal'
require 0.12, the resource calendar shows up in webadmin. How do I use
extras_require to only show the extra when the requirement is met?
If there's a Python setup tutorial that covers this, I haven't found it
but would welcome a pointer. Thanks.
Chris
--
Christopher Nelson, Software Engineering Manager
Sixnet, a Red Lion business | www.sixnet.com
+1 (518) 877-5173, x135
--
You received this message because you are subscribed to the Google Groups "Trac
Development" group.
To post to this group, send email to trac-dev@googlegroups.com.
To unsubscribe from this group, send email to
trac-dev+unsubscr...@googlegroups.com.
For more options, visit this group at
http://groups.google.com/group/trac-dev?hl=en.