Permalink
Browse files

EduTrac adaptation, a lot of Fixes, remove holidays and query copy-paste

  • Loading branch information...
1 parent 9e8db27 commit d6429b7b7bf6b1a1af66b8d3004f0d71fb056080 @lexqt committed Apr 8, 2012
View
@@ -0,0 +1,10 @@
+*~
+*.pyc
+.*.sw[op]
+.svn
+.git
+.hg
+/build
+/*.egg-info
+*.pyc
+*.mo
View
@@ -1,54 +0,0 @@
-TracTicketCalendar�v���O�C��
-
-[TODO]
- * JA�ł̖|��@�\
- * trac-admin upgrade�Ŏ����I�ɐݒ� ���Ȃɂ�H
- * �S���̃`�P�b�g�̏���CC�Ɏ����̖��O������`�P�b�g���ꂽ��
- * �J�n��/�I����Ȃ��`�P�b�g���i����Ȃ��Ă�ꗗ�ɏo���΂����H
- * �y���ғ���ɂł���悤�ɂ���
- * ���j�n�܂�̐ݒ��”\��
-
-[�o�O]
-
-[��]
-�J�����_�[��\������v���O�C���ł��BTrac 0.11�ɑΉ����Ă��܂��BTrac 0.10
-�ȑO�̃o�[�W�����ł͎c�O�Ȃ��瓮�삵�܂���̂ŁA���ӂ��Ă��������B
-(�u�����`��0.10�o�[�W���������Ă܂����\���A�@�\��trunk�Ɠ����ł͂���܂���)
-
-[�C���X�g�[��]
-> python setup.py bdist_egg
-��egg�t�@�C����쐬���Adist/TracTicketCalendarXXX.egg��Trac��plugins�f�B
-���N�g���փR�s�[���Ă��������B
-
-[�g����]
-�C���X�g�[������ƁATrac��Calendar���j���[���\������A������N���b�N����
-������Calendar�����p�ł���悤�ɂȂ�܂��BTicketCalendar�v���O�C���́A�J�X�^��
-�t�B�[���h��due_assign��due_close���ׂāAticket��\�����܂��Btrac.ini�Ɏ�
-�̂悤�ɐݒ肵�Ă����Ɨǂ��ł��傤�B
-
- [ticket-custom]
- due_assign = text
- due_assign.label = �J�n��
- due_assign.order = 1
-
- due_close= text
- due_close.label = �I����
- due_close.order = 2
-
- complete= text
- complete.label = �i����(%)
- complete.order = 3
-
-�J�X�^���t�B�[���h�̊J�n��ƏI����́AYYYY/MM/DD�̌`���œ�͂��܂��B�Ⴆ�΁A
-2007/01/31�ȂǂƋL�q���܂��B
-
-[�j��]
-�Ǘ����-�K���g�E�J�����_�[-�j��ݒ���
-����f�[�^�쐬�A�j��̒lj�A�폜���s���܂��B
-
-*����f�[�^�쐬��쐬���Ȃ��ł���ɂ͉e�����܂���
-
-�J�����_�[�́u��v�A�K���g�`���[�g�͑т�title�ŏڍׂ�ݒ肵�Ă��܂��̂�
-�Ή����Ă���UA���Əڍׂ��|�b�v�A�b�v���܂�
-
-*2009/11/12�͂ǂ��Ȃ���̂��ȁA
View
@@ -1,106 +0,0 @@
-간트캘린더 플러그인 국제화 버전
-
-
-[설명]
-Trac 0.12 에서 티켓의 일정을 간트 차트와 캘린더로 표시해주는 플러그인입니다.
-별도 설정없이 한국어/일본어/영어가 기본 지원되고,
-시스템 로케일에 따라 한국/일본 휴일이 설정 됩니다.
-
-아쉽게도 Trac 0.11 에서는 동작하지 않습니다.
-
-
-[인스톨]
-> python setup.py install
-
-
-인스톨을 한 후 다음과 같이 trac.ini 파일을 수정해야 합니다.
-
-[components]
-ganttcalendar.admin.holidayadminpanel = enabled
-ganttcalendar.complete_by_close.completeticketobserver = enabled
-ganttcalendar.ticketcalendar.ticketcalendarplugin = enabled
-ganttcalendar.ticketgantt.ticketganttchartplugin = enabled
-ganttcalendar.ticketvalidator.ticketvalidator = enabled
-
-[ganttcalendar]
-complete_conditions = fixed, invalid
-default_zoom_mode = 3
-first_day = 0
-show_ticket_summary = false
-
-[ticket-custom]
-complete = select
-complete.label = 진척율 (%)
-complete.options = |0|10|20|30|40|50|60|70|80|90|100
-complete.order = 3
-due_assign = text
-due_assign.label = 시작일
-due_assign.order = 1
-due_close = text
-due_close.label = 완료기한
-due_close.order = 2
-
-변경 가능한 옵션에 대한 설명은 다음과 같습니다.
-
-complete_conditions :
- 티켓을 close할 때, 진척율을 100%로 자동 변경할
- 해결방법들(Resolutions)을 설정합니다.
-
-default_zoom_mode :
- 간트 차트에 기본으로 보여 줄 줌 모드를 1 ~ 6 단계 사이 값 중에서
- 선택하여 설정합니다.
-
-first_day :
- 일요일부터 시작하는 시작 요일을 월요일로 변경하려면 first_day = 1 로 변경합니다.
- 기타 다른 요일로 변경하려면 0 ~ 6 사이 값 중에서 선택하여 설정합니다.
-
- (0: 일요일, 1: 월요일, 2: 화요일, 3: 수요일, 4: 목요일, 5: 금요일, 6: 토요일)
-
-show_ticket_summary :
- 간트 차트 bar 에 기본으로 티켓 제목을 표시하려면 true 로 설정합니다.
-
-format :
- due_assign, due_close 필드의 날짜 포맷을 설정합니다.
- 데이터베이스에 스트링 형식으로 저장하기 때문에
- 년월일 순서로 된 날짜 포맷에 한해서만 정상적인 조회가 가능합니다.
- 기본값은 %Y/%m/%d 입니다.
- 기존 데이터 호환을 위해서 기본값을 사용하길 권장 합니다.
-
- %Y/%m/%d (defalut: JAPAN) : YYYY/MM/DD
- %Y-%m-%d (ISO/KOREA) : YYYY-MM-DD
- .
- .
- .
-
-
-[휴일 설정]
-TRAC_ADMIN 권한을 가진 계정으로 로그인하여 휴일 테이블을 생성하면
-2010년 ~ 2015년 한국 휴일이 자동 등록되고 화면에 표시가 됩니다.
-
-시스템 로케일이 일본으로 설정된 경우 일본 휴일이 등록되고
-시스템 로케일이 한국/일본 이외 일 경우는 빈 테이블만 생성 됩니다.
-
-휴일 테이블 생성 이후에 휴일을 추가/삭제할 수 있으며,
-등록된 휴일은 캘린더와 간트 차트에 표시가 됩니다.
-
-
-[단축키]
-간트 차트와 캘린더 사용의 편의를 위해 단축키가 제공됩니다.
-
-간트 차트 - alt + (shift) + i,j,k,l,m,n
- 상 - zoom in - alt + i (IE) / alt + shift + i (firefox)
- 하 - zoom out - alt + k (IE) / alt + shift + k (firefox)
- 좌 - 이전달 이동 - alt + j (IE) / alt + shift + j (firefox)
- 우 - 다음달 이동 - alt + l (IE) / alt + shift + l (firefox)
- 기본 모드 (normal) - alt + shift + n (firefox) / IE 지원 안함
- 이번달 이동(current month) - alt + shift + m (firefox) / IE 지원 안함
-
-캘린더 - alt + (shift) + j,l,m
- 좌 - 이전달 이동 - alt + j (IE) / alt + shift + j (firefox)
- 우 - 다음달 이동 - alt + l (IE) / alt + shift + l (firefox)
- 이번달 이동 (current month) - alt + shift + m (firefox) / IE 지원 안함
-
-
-
- 2010.11.28
- Genie.
@@ -1,2 +1,5 @@
-# -*- coding: utf-8 -*-
+from api import *
from ticketcalendar import *
+from ticketgantt import *
+from ticketvalidator import *
+from complete_by_close import *
View
@@ -1,117 +0,0 @@
-# -*- coding: utf-8 -*-
-
-import locale
-
-from trac.admin import IAdminPanelProvider
-from trac.core import Component, implements, TracError
-from trac.env import IEnvironmentSetupParticipant
-
-from ganttcalendar.translation import _, add_domain
-
-
-class HolidayAdminPanel(Component):
-
- implements(IAdminPanelProvider, IEnvironmentSetupParticipant)
-
- def __init__(self):
- import pkg_resources
- locale_dir = pkg_resources.resource_filename(__name__, 'locale')
- add_domain(self.env.path, locale_dir)
-
- # Work around for untranslated messages when first-response
- # IEnvironmentSetupParticipant methods
- def environment_created(self):
- pass
-
- def environment_needs_upgrade(self, db):
- return False
-
- def upgrade_environment(self, db):
- pass
-
- def get_admin_panels(self, req):
- if 'TRAC_ADMIN' in req.perm:
- yield ('ganttcalendar', u'Ganttcalendar', 'holiday', _('Holiday Setting'))
-
- def render_admin_panel(self, req, cat, page, path_info):
- tbl_chk = True
- db = self.env.get_db_cnx()
- cursor = db.cursor();
- sql = "SELECT count(*) from holiday"
- try:
- cursor.execute(sql)
- except:
- tbl_chk = False
-
- if req.method == 'POST':
- if req.args.get('add'):
- keydate = req.args.get('date')
- sql = "SELECT count(*) FROM holiday WHERE date='" + keydate + "'"
- cursor.execute(sql)
- for cnt, in cursor:
- dup_chk = cnt
- if dup_chk == 1:
- raise TracError(_('Holiday %(date)s already exists.',date=keydate))
- sql = "INSERT INTO holiday VALUES('" + keydate +"','" + req.args.get('description') + "')"
- cursor.execute(sql)
- db.commit()
- req.redirect(req.href.admin(cat, page))
-
- elif req.args.get('remove'):
- sel = req.args.get('sel')
- if not sel:
- raise TracError(_('No holiday selected'))
- if not isinstance(sel, list):
- sel = [sel]
- for name in sel:
- keydate = name
- sql = "DELETE FROM holiday WHERE date ='" + keydate+ "'"
- cursor.execute(sql)
- db.commit()
- req.redirect(req.href.admin(cat, page))
-
- elif req.args.get('create_table'):
- (loc,enc) = locale.getdefaultlocale()
-
- self.log.info("loc:"+loc)
- if (loc.find("ko_")==0) or (loc.find("Korean_")==0):
- from holiday_ko import holidays_tbl
- self.log.info("import holiday_ko")
- elif (loc.find("ja_")==0) or (loc.find("Japanese_")==0):
- from holiday_ja import holidays_tbl
- self.log.info("import holiday_ja")
- else:
- holidays_tbl={}
- self.log.info("create empty holiday table")
-
- sql = "CREATE TABLE holiday (date TEXT, description TEXT)"
- cursor.execute(sql)
- db_type = self.config['trac'].get('database').split(':')[0].lower()
- if db_type != 'mysql':
- # SQLite, PostgreSQL
- sql = "CREATE UNIQUE INDEX idx_holiday ON holiday(date ASC)"
- else:
- # MySQL
- sql = "CREATE UNIQUE INDEX idx_holiday ON holiday(date(10) ASC)"
- cursor.execute(sql)
- db.commit()
- for h in holidays_tbl.keys():
- sql = "INSERT INTO holiday VALUES('"+ h+ "','"+ holidays_tbl[h]+ "')"
- cursor.execute(sql)
- db.commit()
- req.redirect(req.href.admin(cat, page))
-
- elif req.args.get('drop_table'):
- sql = "DROP TABLE holiday"
- cursor.execute(sql)
- db.commit()
- req.redirect(req.href.admin(cat, page))
-
- #list
- holidays = []
- if tbl_chk:
- sql = "SELECT date,description FROM holiday ORDER BY date"
- cursor.execute(sql)
- for hol_date,hol_desc in cursor:
- holidays.append( { 'date': hol_date, 'description': hol_desc})
- return 'admin_holiday.html',{'_': _, 'holidays': holidays,'tbl_chk':tbl_chk}
View
@@ -0,0 +1,47 @@
+from datetime import date
+from pkg_resources import resource_filename
+
+from trac.core import Component
+from trac.config import IntOption
+from trac.util.translation import domain_functions
+
+
+__all__ = ['TracGanttCalendar']
+
+
+add_domain, _, N_, gettext, ngettext, tag_ = \
+ domain_functions('ganttcalendar', ('add_domain', '_', 'N_', 'gettext',
+ 'ngettext', 'tag_'))
+
+month_tbl = {
+ 1: N_('January'),
+ 2: N_('February'),
+ 3: N_('March'),
+ 4: N_('April'),
+ 5: N_('May'),
+ 6: N_('June'),
+ 7: N_('July'),
+ 8: N_('August'),
+ 9: N_('September'),
+ 10: N_('October'),
+ 11: N_('November'),
+ 12: N_('December'),
+}
+
+date_format = '%Y-%m-%d' # ISO 8601
+
+def add_months(year, month, months):
+ month = month + months - 1
+ nyear = year + month / 12
+ nmonth = month % 12 + 1
+ return date(nyear, nmonth, 1)
+
+
+class TracGanttCalendar(Component):
+
+ first_day = IntOption('ganttcalendar', 'first_day', '0',
+ doc='Begin of week: 0 == Sunday, 1 == Monday')
+
+ def __init__(self):
+ locale_dir = resource_filename(__name__, 'locale')
+ add_domain(self.env.path, locale_dir)
Oops, something went wrong.

0 comments on commit d6429b7

Please sign in to comment.