o k`@stddlmZmZmZmZmZmZddlTddlm Z ddl m Z ddl m Z ddlmZmZmZddlmZmZddlmZmZmZmZmZdd lmZmZmZdd lm Z m!Z!m"Z"dd l#m$Z$m%Z%m&Z&m'Z'm(Z(Gd d d e)Z*Gddde*Z+Gddde*Z,Gddde*Z-Gddde*Z.Gddde.Z/Gddde.Z0Gddde.Z1Gddde.Z2Gddde)Z3d S)!)AdminCommandErrorIAdminCommandProviderIAdminPanelProviderconsole_date_formatconsole_datetime_formatget_console_locale)*)ResourceNotFound)model) TicketSystem)MilestoneModuleget_num_tickets_for_milestonegroup_milestones)as_intgetuser) format_dateformat_datetimeget_datetime_format_hint parse_date user_time)exception_to_unicode print_tableprintout)_N_gettext)Chrome add_ctxtnav add_notice add_script add_warningc@sNeZdZeeedZdZededfZ ddZ ddZ dd Z d d Z d S) TicketAdminPanelT undefinedz (Undefined)ccs>d|dd|jvrdtd|jt|jdfVdSdS)N TICKET_ADMINadminticket/ticket Ticket Systemperm_typerr_label)selfreqr/3/usr/lib/python3/dist-packages/trac/ticket/admin.pyget_admin_panels/s    z!TicketAdminPanel.get_admin_panelsc Cs6z |||||WSty}zt||d}~wwN)_render_admin_panelAssertionError TracError)r-r.catpage path_infoer/r/r0render_admin_panel4s  z#TicketAdminPanel.render_admin_panelc Cshz|jWn#ty*}z|jdt|t|tdWYd}~dSd}~wwt|tddS)zbTry to save the config, and display either a success notice or a failure warning. zError writing to trac.ini: %szhError writing to trac.ini, make sure it is writable by the web server. Your changes have not been saved.NYour changes have been saved.) configsaveEnvironmentErrorlogerrorrr rr)r-r.r9r/r/r0 _save_config;szTicketAdminPanel._save_configcCstd)NzZClass inheriting from TicketAdminPanel has not implemented the _render_admin_panel method.)NotImplemented)r-r.r6r7r8r/r/r0r3Jsz$TicketAdminPanel._render_admin_panelN)__name__ __module__ __qualname__ implementsrrabstractr+rr,r1r:rAr3r/r/r/r0r! s  r!c@seZdZdZededfZddZddZdd Zd d Z d d Z ddZ ddZ ddZ dddZddZddZddZdS)ComponentAdminPanel components Component Componentsc Cs|rdt|j|}|jdkrO|jdr?|jd|_|jd|_|jd|_| t |t d| |j ||n|jdrO| |j ||t|j}||||d|d }n|jd d }|jdkr=|jd r|jdrt|j}|jd|_|jd|_|t |t d |jdn|jdr|jd} | stt d|jj'| D]} t|j| | |kr|jd d d||qWdn1swYt |t dnD|jdr|jd} | r| |kr|jd| |jd d | ||n|jdr3|jd|jd d d||| |j ||dttj|j|d}t|j} | dur\| dd| d| id|fS)NPOSTr=nameowner descriptionr;canceldetail)view componentr&default_componentaddz(The component "%(name)s" has been added.rMremoveselzNo component selectedz*The selected components have been removed.applydefaultzSetting default component to %sclearzClearing default componentlist)rRrIr[rownerszadmin_components.html) r rJenvmethodargsgetrMrNrOupdaterrredirecthrefr$radd_wiki_toolbarsadd_auto_previewr<insertgetlistr5db_transactiondeletesetrAr?infor]selectr get_allowed_owners) r-r.r6r7rScompchromedatar[rXrMr^r/r/r0r3Vs~                    z'ComponentAdminPanel._render_admin_panelccshdddd|jfVddd|j|jfVddd |j|jfVd d d |j|jfVd dd|j|jfVdS)Nzcomponent listrYzShow componentsz component addz [owner]z Add componentzcomponent rename zRename componentzcomponent removezRemove componentzcomponent chownz zChange component owner)_do_list _complete_add_do_add_complete_name _do_rename _do_remove_complete_chown _do_chownr-r/r/r0get_admin_commandss* z&ComponentAdminPanel.get_admin_commandscCddtj|jDS)NcSg|]}|jqSr/rV.0cr/r/r0 z:ComponentAdminPanel.get_component_list..)r rJrnr_r}r/r/r0get_component_listz&ComponentAdminPanel.get_component_listcCst|jSr2)r r_ror}r/r/r0 get_user_listsz!ComponentAdminPanel.get_user_listcCt|dkr |SdS)N)lenrr-rar/r/r0rv z!ComponentAdminPanel._complete_addcCrNr()rrrr/r/r0rxrz"ComponentAdminPanel._complete_namecCs,t|dkr |St|dkr|SdS)Nr(r)rrrrr/r/r0r{  z#ComponentAdminPanel._complete_chowncC.tddtj|jDtdtdgdS)NcSsg|]}|j|jfqSr/)rMrNrr/r/r0rsz0ComponentAdminPanel._do_list..NameOwner)rr rJrnr_rr}r/r/r0rus  zComponentAdminPanel._do_listNcCs$t|j}||_||_|dSr2)r rJr_rMrNrhr-rMrNrSr/r/r0rws  zComponentAdminPanel._do_addcC t|j|}||_|dSr2)r rJr_rMrc)r-rMnewnamerSr/r/r0ry zComponentAdminPanel._do_renamecCt|j|dSr2)r rJr_rkr-rMr/r/r0rzzComponentAdminPanel._do_removecCrr2)r rJr_rNrcrr/r/r0r|rzComponentAdminPanel._do_chownr2)rCrDrEr+rr,r3r~rrrvrxr{rurwryrzr|r/r/r/r0rHOsL  rHc@szeZdZdZededfZddZddZdd Zd d Z d d Z ddZ dddZ ddZ ddZddZddZdS)MilestoneAdminPanel milestones Milestone MilestonesccsV|dd|j}d|vsd|vr'd|vr)dtd|jt|jdfVdSdSdS) Nr$r%MILESTONE_ADMINMILESTONE_VIEWr#r&r'r(r))r-r.r*r/r/r0r1s   z$MilestoneAdminPanel.get_admin_panelscs:dd|j}|rt|j|t|j}jdkrFdjvr7|d| r6 j ||ndjvrF j ||d| |jd}fd d tj|jD}t|d jv|d <t|jd d|d<t|j} | | ttdj |nv|jdd} |jdd} jdkrdjvrjdr|djd} z tj|j| dWntyt|j| _t|j Ynwttd| dndjvrcd} |djd}|sttd|jj?|D]4} t|j|  dj!d"| | kr2|j#ddd d } | | krA|j#ddd d } qWdn 1sNwY| r[|$t%td!nzd"jvrd} |d jd#} | r| | kr|j&'d$| |j#dd| d } jd%}|r|| kr|j&'d&||j#dd|d } | r|$n&d'jvr|d |j&'d(|j#ddd |j#ddd |$ j ||t(|j)d)fd*d+}d,tj|j|fd-d+| | d.}t|j*|+d/t,j-id0|fS)1Nr$r%rLr=MILESTONE_MODIFYrPrQ)rR milestone default_due retarget_tocs,g|]}|jjkrd|jvr|qS)r)rMr*resourcerm)rr.r/r0rs  z;MilestoneAdminPanel._render_admin_panel..r#milestone_groupsT)exclude_closednum_open_ticketszView Milestoner&default_milestonerdefault_retarget_torUrMMILESTONE_CREATErVz@Milestone "%(name)s" already exists, please choose another name.rWFMILESTONE_DELETErXzNo milestone selectedzMilestone deletedrYz*The selected milestones have been removed.rZticket_defaultz&Setting default ticket milestone to %sretarget_defaultz+Setting default retargeting milestone to %sr\z@Clearing default ticket milestone and default retarget milestonez SELECT milestone, COUNT(milestone) FROM ticket WHERE milestone != '' GROUP BY milestone csjdd|fgS)N)groupstatusr)requeryrVr.r/r0isz9MilestoneAdminPanel._render_admin_panel..r]cs|jdS)Nr)rbrM)r) num_ticketsr/r0ros)rRr query_hrefrrr datetime_hintzadmin_milestones.html).r*r+r rr_r r`rarequiresave_milestonerdrer$get_default_duerrnrr rrfrgrrrr<rbr rMr rir5rj move_ticketsauthnamerkrlrArr?rmdictdb_query add_jquery_uircrlc_time)r-r.r6r7milestone_name perm_cachemilestone_modulerrrrqrrrMr=rXretargetrr/)rrr.r0r3s                                        z'MilestoneAdminPanel._render_admin_panelccst|j}t|tdd}dddd|jfVdddd|jfVd d d |j|jfVd d d||j|jfVddd||j|jfVddd|j|j fVdS)Niso8601datetimerzmilestone listrYzShow milestonesz milestone addz [due]z Add milestonezmilestone renamerszRename milestonez milestone duez a^Set milestone due date The date must be specified in the "%(datetime)s" or "%(iso8601)s" (ISO 8601) format. Alternatively, "now" can be used to set the due date to the current time. To remove the due date from a milestone, specify an empty string (""). zmilestone completedz awSet milestone complete date The date must be specified in the "%(datetime)s" or "%(iso8601)s" (ISO 8601) format. Alternatively, "now" can be used to set the completion date to the current time. To remove the completion date from a milestone, specify an empty string (""). zmilestone removertzRemove milestone) rr_rrurwrxry_do_due _do_completedrzr-localehintsr/r/r0r~|sB    z&MilestoneAdminPanel.get_admin_commandscCr)NcSrr/rVrr/r/r0rrz:MilestoneAdminPanel.get_milestone_list..)r rrnr_r}r/r/r0get_milestone_listrz&MilestoneAdminPanel.get_milestone_listcCrr)rrrr/r/r0rxrz"MilestoneAdminPanel._complete_namecCs4tddtj|jDtdtdtdgdS)NcSs<g|]}|j|jrt|jtnd|jrt|jtndfqSr2)rMduerr completedrrrr/r/r0rsz0MilestoneAdminPanel._do_list..rDue Completed)rr rrnr_rr}r/r/r0rus  zMilestoneAdminPanel._do_listNcCs<t|j}||_|durt|dt|jd|_|dSNr)hintr)r rr_rMrrrrhr-rMrrr/r/r0rws  zMilestoneAdminPanel._do_addcCs&t|j|}||_|jtddS)N)author)r rr_rMrcr)r-rMrrr/r/r0ryszMilestoneAdminPanel._do_renamecC8t|j|}|rt|dt|jdnd|_|dSr)r rr_rrrrcrr/r/r0r zMilestoneAdminPanel._do_duecCrr)r rr_rrrrc)r-rMrrr/r/r0rrz!MilestoneAdminPanel._do_completedcCrr2)r rr_rkrr/r/r0rzrzMilestoneAdminPanel._do_remover2)rCrDrEr+rr,r1r3r~rrxrurwryrrrzr/r/r/r0rs'  rc@sveZdZdZededfZddZeddZdd Z d d Z d d Z ddZ dddZ ddZddZddZdS)VersionAdminPanelversionsVersionVersionsc Cs|rct|j|}|jdkrN|jdr>|jd|_|||_|jd|_ | t |t d| |j||n|jdrN| |j||t|j}||||d|d}n|jd d }|jdkr;|jd r|jdrt|j}|jd|_|||_|t |t d |jd n|jdr|jd} | stt d|jj'| D]} t|j| | |kr|jd d d||qWdn1swYt |t dnD|jdr|jd} | r| |kr|jd| |jd d | ||n|jdr1|jd|jd d d||| |j||dttj|j|d}t|j|| dt |j!id|fS)NrLr=rMrOr;rPrQ)rRversionr&default_versionrUz&The version "%(name)s" has been added.rVrWrXzNo version selectedrYz(The selected versions have been removed.rZr[zSetting default version to %sr\zClearing default versionr])rRrr[rzadmin_versions.html)"r rr_r`rarbrM_get_user_timetimerOrcrrrdrer$rrfrgr<rhrir5rjrkrlrAr?rmr]rnrrr) r-r.r6r7rverrqrrr[rXrMr/r/r0r3sz                    z%VersionAdminPanel._render_admin_panelcCs$|jd}|rt|t|ddSdS)Nrr)r)rarbrr)clsr.rr/r/r0r!s z VersionAdminPanel._get_user_timeccst|j}t|tdd}dddd|jfVdddd|jfVd d d |j|jfVd d d|j|jfVddd||j|jfVdS)Nrrz version listrYz Show versionsz version addz [time]z Add versionzversion renamerszRename versionzversion removertzRemove versionz version timez