Changeset d917c5a in indico


Ignore:
Timestamp:
08/30/11 15:17:50 (22 months ago)
Author:
Jose Benito <jose.benito.gonzalez@…>
Branches:
master, hello-world-walkthrough, ipv6, v0.98-series, v0.98.2, v0.98.3, v0.98b2, v0.99, b8c30da8ebdbdcbd675a873997cc3e95f567de49, 4287315ec967a3da168d83963c14001db8487d53
Children:
a41c8f
Parents:
633342
git-author:
Alberto Resco Perez <alberto.resco.perez@…> (06/21/11 17:34:50)
git-committer:
Jose Benito <jose.benito.gonzalez@…> (08/30/11 15:17:50)
Message:

[FIX] Send this alarm as an email to test config

  • When sending the emails, the config is kept.
  • The Alarm Tab is active for all kind of events.
  • Closes #716.
Location:
indico
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • indico/MaKaC/conference.py

    r633342 rd917c5a  
    27222722 
    27232723        for alarm in self.getAlarmList(): 
    2724             self.removeAlarm(alarm) 
     2724            if not alarm.getEndedOn(): 
     2725                self.removeAlarm(alarm) 
    27252726 
    27262727        self.removeAllEvaluations() 
     
    43124313        return conf 
    43134314 
    4314     def newAlarm(self, when): 
     4315    def newAlarm(self, when, enqueue=True): 
    43154316 
    43164317        if type(when) == timedelta: 
     
    43264327                             relative=relative) 
    43274328 
    4328         self.addAlarm(al) 
     4329        self.addAlarm(al, enqueue) 
    43294330        return al 
    43304331 
     
    43444345        return self.__alarmCounter.newCount() 
    43454346 
    4346     def addAlarm(self, alarm): 
    4347         tl = Client() 
    4348  
    4349         tl.enqueue(alarm) 
     4347    def addAlarm(self, alarm, enqueue = True): 
     4348        if enqueue: 
     4349            tl = Client() 
     4350            tl.enqueue(alarm) 
    43504351 
    43514352        self.alarmList[alarm.getConfRelativeId()] = alarm 
  • indico/MaKaC/services/implementation/conference.py

    r633342 rd917c5a  
    5555 
    5656from MaKaC.services.interface.rpc.common import ServiceError, Warning, \ 
    57         ResultWithWarning, TimingNoReportError 
     57        ResultWithWarning, TimingNoReportError, ServiceAccessError, NoReportError 
    5858from MaKaC.fossils.contribution import IContributionFossil 
    59  
    60  
     59from indico.modules.scheduler import tasks 
     60from indico.util.i18n import i18nformat 
     61from MaKaC.common.Configuration import Config 
    6162class ConferenceBase: 
    6263    """ 
     
    766767    def _handleGet(self): 
    767768        return self._target.getAccessController().getContactInfo() 
     769 
     770class ConferenceAlarmSendTestNow(ConferenceModifBase): 
     771 
     772    def _checkParams(self): 
     773        ConferenceModifBase._checkParams(self) 
     774        pm = ParameterManager(self._params) 
     775        self._fromAddr = pm.extract("fromAddr", pType=str, allowEmpty=False) 
     776        self._note = pm.extract("note", pType=str, allowEmpty=True) 
     777        self._includeConf = pm.extract("includeConf", pType=str, allowEmpty=True, defaultValue="") 
     778 
     779    def _getAnswer(self): 
     780        al = tasks.AlarmTask(self._conf, 0, datetime.timedelta(), relative=datetime.timedelta()) 
     781        al.setFromAddr(self._fromAddr) 
     782        al.setNote(self._note) 
     783        al.setConfSummary(self._includeConf == "1") 
     784 
     785        if self._getUser(): 
     786            fullName = self._getUser().getStraightFullName() 
     787            al.addToAddr(self._aw.getUser().getEmail()) 
     788        else: 
     789            raise NoReportError(_("You must be logged in to use this feature")) 
     790 
     791        try: 
     792            locationText = self._target.getLocation().getName() 
     793            if self._target.getLocation().getAddress() != "": 
     794                locationText += ", %s" % self._target.getLocation().getAddress() 
     795            if self._target.getRoom().getName() != "": 
     796                locationText += " (%s)" % self._target.getRoom().getName() 
     797        except: 
     798            locationText = "" 
     799        if locationText != "": 
     800            locationText = i18nformat(""" _("Location"): %s""") % locationText 
     801 
     802        if Config.getInstance().getShortEventURL() != "": 
     803            url = "%s%s" % (Config.getInstance().getShortEventURL(), 
     804                            self._target.getId()) 
     805        else: 
     806            url = urlHandlers.UHConferenceDisplay.getURL( self._target ) 
     807 
     808        al.setText( _("""Hello, 
     809    Please note that the event "%s" will begin on %s (%s). 
     810    %s 
     811 
     812    You can access the full event here: 
     813    %s 
     814 
     815Best Regards, 
     816 
     817%s 
     818 
     819    """)%(self._target.getTitle(),\ 
     820                self._conf.getAdjustedStartDate().strftime("%A %d %b %Y at %H:%M"),\ 
     821                self._conf.getTimezone(),\ 
     822                locationText,\ 
     823                url,\ 
     824                fullName,\ 
     825                )) 
     826        al.run(check = False) 
     827        return True; 
    768828 
    769829methodMap = { 
     
    794854    "protection.setAccessKey": ConferenceProtectionSetAccessKey, 
    795855    "protection.setModifKey": ConferenceProtectionSetModifKey, 
    796     "protection.changeContactInfo": ConferenceContactInfoModification 
     856    "protection.changeContactInfo": ConferenceContactInfoModification, 
     857    "alarm.sendTestNow": ConferenceAlarmSendTestNow 
    797858    } 
  • indico/MaKaC/webinterface/meeting.py

    r581578 rd917c5a  
    100100    def getConfModifAC(rh, conf): 
    101101        return WPMConfModifAC(rh, conf) 
    102  
    103     @staticmethod 
    104     def getConfModifTools(rh, conf): 
    105         return conferences.WPConfDisplayAlarm(rh, conf) 
    106102 
    107103    @staticmethod 
     
    17571753        return evaluations.WPEvaluationInactive._getBody(self, params) 
    17581754 
    1759 #################### Alarms ##################################### 
    1760  
    1761 class WPMConfAddAlarm(WPMConfModifTools, conferences.WPConfAddAlarm): 
    1762  
    1763     def __init__(self, rh, conf): 
    1764         WPMConfModifTools.__init__(self, rh, conf) 
    1765  
    1766     def _setActiveTab( self ): 
    1767         self._tabAlarms.setActive() 
    1768  
    1769     def _getTabContent(self, params): 
    1770         params["toAllParticipants"] =  i18nformat(""" 
    1771         <tr> 
    1772             <td>&nbsp;<input type="checkbox" name="toAllParticipants"></td> 
    1773             <td> _("Send alarm to all participants of the event.")</td> 
    1774         </tr> 
    1775         """) 
    1776         return conferences.WPConfAddAlarm._getTabContent(self, params) 
    1777  
    17781755class WPMTimeTableCustomizePDF(WPMeetingDisplay): 
    17791756 
  • indico/MaKaC/webinterface/pages/conferences.py

    r633342 rd917c5a  
    42164216                urlHandlers.UHConfDVDCreation.getURL(self._conf) ) 
    42174217 
    4218         self._tabAlarms.setEnabled(False) 
    42194218        self._tabOfflineSite.setHidden(True) 
    42204219 
     
    52585257#--------------------------------------------------------------------------------------- 
    52595258 
    5260 class WSetAlarm(wcomponents.WTemplated): 
     5259class WConfDisplayAlarm( wcomponents.WTemplated ): 
    52615260 
    52625261    def __init__(self, conference, aw): 
    5263             self.__conf = conference 
    5264             self._aw=aw 
    5265  
    5266     def _getFromOptionsHTML(self, selected=""): 
    5267         emails=[] 
    5268         foundEmail=False 
    5269         selHTML="" 
    5270         if selected=="": 
    5271             foundEmail=True 
    5272             selHTML="selected=\"selected\"" 
    5273         html=[ i18nformat("""<option value=\"\" %s>--_("select a from address")--</option>""")%selHTML] 
    5274         for ch in self.__conf.getChairList(): 
    5275             if ch.getEmail().strip()!="" and ch.getEmail().strip() not in emails: 
    5276                 selHTML="" 
    5277                 if selected.strip()==ch.getEmail().strip(): 
    5278                     foundEmail=True 
    5279                     selHTML="selected=\"selected\"" 
    5280                 html.append("<option value=%s %s>%s &#60;%s&#62;</option>"%(quoteattr(ch.getEmail().strip()),selHTML,ch.getFullName(),ch.getEmail().strip())) 
    5281                 emails.append(ch.getEmail().strip()) 
    5282         if self.__conf.getSupportEmail().strip()!="" and self.__conf.getSupportEmail().strip() not in emails: 
    5283             selHTML="" 
    5284             if selected.strip()==self.__conf.getSupportEmail().strip(): 
    5285                 foundEmail=True 
    5286                 selHTML="selected=\"selected\"" 
    5287             html.append("<option value=%s %s>%s</option>"%(quoteattr(self.__conf.getSupportEmail().strip()),selHTML,self.__conf.getSupportEmail().strip())) 
    5288             emails.append(self.__conf.getSupportEmail().strip()) 
    5289         if self._aw.getUser() is not None and self._aw.getUser().getEmail().strip() not in emails: 
    5290             selHTML="" 
    5291             if selected.strip()==self._aw.getUser().getEmail().strip(): 
    5292                 foundEmail=True 
    5293                 selHTML="selected=\"selected\"" 
    5294             html.append("<option value=%s %s>%s</option>"%(quoteattr(self._aw.getUser().getEmail().strip()),selHTML,self._aw.getUser().getEmail().strip())) 
    5295             emails.append(self._aw.getUser().getEmail().strip()) 
    5296         if self.__conf.getCreator() is not None and self.__conf.getCreator().getEmail().strip() not in emails: 
    5297             selHTML="" 
    5298             if selected.strip()==self.__conf.getCreator().getEmail().strip(): 
    5299                 foundEmail=True 
    5300                 selHTML="selected=\"selected\"" 
    5301             html.append("<option value=%s %s>%s &#60;%s&#62;</option>"%(quoteattr(self.__conf.getCreator().getEmail().strip()),selHTML,self.__conf.getCreator().getFullName(), self.__conf.getCreator().getEmail().strip())) 
    5302         #selHTML="" 
    5303         #if selected.strip()==self.__conf.getTitle().strip(): 
    5304         #    foundEmail=True 
    5305         #    selHTML="selected=\"selected\"" 
    5306         #html.append("<option value=%s %s>%s</option>"%(quoteattr(self.__conf.getTitle().strip()),selHTML,self.__conf.getTitle().strip())) 
    5307         if not foundEmail: 
    5308             selHTML="selected=\"selected\"" 
    5309             html.append("<option value=%s %s>%s</option>"%(quoteattr(selected.strip()),selHTML,selected.strip())) 
    5310         return "".join(html) 
    5311  
    5312     def getVars(self): 
    5313         vars = wcomponents.WTemplated.getVars(self) 
    5314         vars["alarmId"] = vars.get("alarmId","") 
    5315         vars["confTitle"] = self.__conf.getTitle() 
    5316         vars["formTitle"] = vars.get("formTitle", _("Create a new alarm email")) 
    5317         vars["fromOptions"] = self._getFromOptionsHTML(vars.get("fromEmail","")) 
    5318         vars["toEmails"] = vars.get("toEmails","") 
    5319         if vars["toEmails"] != "" : 
    5320             vars["definedRecipients"] = "checked" 
    5321             vars["recipientsDisabled"] = "" 
    5322         else : 
    5323             vars["definedRecipients"] = "" 
    5324             vars["recipientsDisabled"] = """disabled="disabled" """ 
    5325         vars["includeConf"] = vars.get("includeConf","") 
    5326         vars["note"] = vars.get("note","") 
    5327         vars["timezone"] = self.__conf.getTimezone() 
    5328         return vars 
    5329  
    5330 #--------------------------------------------------------------------------------------- 
    5331  
    5332 class WConfDisplayAlarm( wcomponents.WTemplated ): 
    5333  
    5334     def __init__(self, conference, aw): 
    5335             self.__conf = self.__target = conference 
    5336             self._aw=aw 
     5262        self.__conf = self.__target = conference 
     5263        self._aw=aw 
    53375264 
    53385265    def getVars( self ): 
     
    53435270        vars["alarmList"] = self.__target.getAlarmList() 
    53445271        vars["timezone"] = self.__target.getTimezone() 
    5345         vars["notScheduledMsg"] = _("The alarm is being scheduled, please wait some seconds and refresh the page.") 
    5346         vars["alarmSentMsg"] = _("The alarm can no longer be edited as it has already been sent.") 
     5272        vars["addAlarmURL"] = urlHandlers.UHConfAddAlarm.getURL( self.__conf ) 
     5273        vars["deleteAlarmURL"] = urlHandlers.UHConfDeleteAlarm.getURL() 
     5274        vars["modifyAlarmURL"] = urlHandlers.UHConfModifyAlarm.getURL() 
    53475275        return vars 
    53485276 
     
    53515279    def _getTabContent( self, params ): 
    53525280        wc = WConfDisplayAlarm( self._conf, self._rh._getUser() ) 
    5353         p = { 
    5354 "addAlarmURL": urlHandlers.UHConfAddAlarm.getURL( self._conf ), \ 
    5355 "deleteAlarmURL": urlHandlers.UHConfDeleteAlarm.getURL(), \ 
    5356 "modifyAlarmURL": urlHandlers.UHConfModifyAlarm.getURL(), \ 
    5357     } 
    5358         return wc.getHTML( p ) 
     5281        return wc.getHTML() 
     5282 
     5283#--------------------------------------------------------------------------------------- 
     5284 
     5285class WSetAlarm(wcomponents.WTemplated): 
     5286 
     5287    def __init__(self, conference, aw): 
     5288        self.__conf = conference 
     5289        self._aw=aw 
     5290 
     5291    def _getFromList(self): 
     5292        fromList = {} 
     5293        for ch in self.__conf.getChairList(): 
     5294            if not fromList.has_key(ch.getEmail().strip()): 
     5295                fromList[ch.getEmail().strip()] = ch.getFullName() 
     5296        if self.__conf.getSupportEmail().strip()!="" and not fromList.has_key(self.__conf.getSupportEmail().strip()): 
     5297            fromList[self.__conf.getSupportEmail().strip()] = self.__conf.getSupportEmail().strip() 
     5298        if self._aw.getUser() is not None and not fromList.has_key(self._aw.getUser().getEmail().strip()): 
     5299            fromList[self._aw.getUser().getEmail().strip()] = self._aw.getUser().getFullName() 
     5300        if self.__conf.getCreator() is not None and not fromList.has_key(self.__conf.getCreator().getEmail().strip()): 
     5301            fromList[self.__conf.getCreator().getEmail().strip()] = self.__conf.getCreator().getFullName() 
     5302        return fromList 
     5303 
     5304    def getVars(self): 
     5305        vars = wcomponents.WTemplated.getVars(self) 
     5306        if vars.has_key("alarmId"): 
     5307            vars["formTitle"] =  _("Create a new alarm email") 
     5308        else: 
     5309            vars["formTitle"] =  _("Modify alarm data") 
     5310        vars["timezone"] = self.__conf.getTimezone() 
     5311        vars["conference"] = self.__conf 
     5312        vars["today"] = datetime.today() 
     5313        vars["fromList"] = self._getFromList() 
     5314        return vars 
    53595315 
    53605316class WPConfAddAlarm( WPConfModifToolsBase ): 
     
    53635319        self._tabAlarms.setActive() 
    53645320 
    5365  
    53665321    def _getTabContent( self, params ): 
    5367         p = WSetAlarm( self._conf, self._getAW() ) 
    5368         testSendAlarm = i18nformat("""<input type="submit" class="btn" value="_("send this alarm email now")" onClick="this.form.action='%s';">""") % urlHandlers.UHSendAlarmNow.getURL( self._conf  ) 
    5369         if self._rh._getUser(): 
    5370             testSendAlarm += i18nformat(""" <input type="submit" class="btn" value="_("send me this alarm email as a test")" onClick="this.form.action='%s';">""") % urlHandlers.UHTestSendAlarm.getURL( self._conf  ) 
    5371         thisyear=datetime.today().year 
    5372         thismonth=datetime.today().month 
    5373         thisday=datetime.today().day 
    5374         yearoptions="" 
    5375         for i in range(thisyear,thisyear+10): 
    5376             yearoptions+="<OPTION VALUE='%s'>%s" % (i,i) 
    5377         monthoptions="" 
    5378         for i in range(1,13): 
    5379             if i==thismonth: 
    5380                 selecttext=" selected" 
    5381             else: 
    5382                 selecttext="" 
    5383             monthoptions+="<OPTION VALUE='%02d'%s>%s" % (i,selecttext,datetime(1900,i,1).strftime("%B")) 
    5384         dayoptions="" 
    5385         for i in range(1,32): 
    5386             if i==thisday: 
    5387                 selecttext=" selected" 
    5388             else: 
    5389                 selecttext="" 
    5390             dayoptions+="<OPTION VALUE='%02d'%s>%02d" %(i,selecttext,i) 
    5391         pars = { \ 
    5392 "cancelURL": urlHandlers.UHConfDisplayAlarm.getURL( self._conf ), \ 
    5393 "saveAlarm": urlHandlers.UHSaveAlarm.getURL( self._conf ), \ 
    5394 "confId": self._conf.getId(), \ 
    5395 "yearOptions": yearoptions, \ 
    5396 "monthOptions": monthoptions, \ 
    5397 "dayOptions": dayoptions, \ 
    5398 "testSendAlarm": testSendAlarm } 
    5399         pars["toAllParticipants"] = params.get("toAllParticipants","") 
    5400         pars["selec1"] = " checked" 
    5401         pars["selec2"] = pars["selec3"] = "" 
    5402         pars["hour"] = "" 
    5403         for i in range(0,24): 
    5404             pars["hour"] += "<OPTION VALUE=\"%s\">%sH\n"%(string.zfill(i,2),string.zfill(i,2)) 
    5405         pars["hourBefore"] = "" 
    5406         for i in range(1,24): 
    5407             pars["hourBefore"] += "<OPTION VALUE=\"%s\">H-%s\n"%(string.zfill(i,2),i) 
    5408         pars["dayBefore"] = "" 
    5409         for i in range(1,8): 
    5410             pars["dayBefore"] += "<OPTION VALUE=\"%s\">D-%s\n"%(string.zfill(i,2),i) 
    5411         return p.getHTML( pars ) 
     5322        wc = WSetAlarm( self._conf, self._getAW() ) 
     5323        pars = {} 
     5324        pars["alarmId"] = self._rh._reqParams.get("alarmId","") 
     5325        pars["user"] = self._rh._getUser() 
     5326        pars["fromAddr"] = self._rh._reqParams.get("fromAddr","") 
     5327        pars["Emails"] = self._rh._reqParams.get("Emails","") 
     5328        pars["note"] = self._rh._reqParams.get("note","") 
     5329        pars["includeConf"] = (self._rh._reqParams.get("includeConf","")=="1") 
     5330        pars["toAllParticipants"] =  (self._rh._reqParams.get("toAllParticipants",False) == "on") 
     5331        pars["dateType"] = int(self._rh._reqParams.get("dateType",-1)) 
     5332        tz=self._conf.getTimezone() 
     5333        now = nowutc().astimezone(timezone(tz)) 
     5334        pars["year"]=self._rh._reqParams.get("year",now.year) 
     5335        pars["month"] = self._rh._reqParams.get("month",now.month) 
     5336        pars["day"] = self._rh._reqParams.get("day",now.day) 
     5337        pars["hour"] = self._rh._reqParams.get("hour","08") 
     5338        pars["minute"] = self._rh._reqParams.get("minute","00") 
     5339        pars["timeBefore"] = int(self._rh._reqParams.get("_timeBefore",0)) 
     5340        pars["timeTypeBefore"] = self._rh._reqParams.get("dayBefore","") 
     5341        return wc.getHTML( pars ) 
    54125342 
    54135343#-------------------------------------------------------------------- 
     
    54195349        self._alarm = alarm 
    54205350 
    5421  
    54225351    def _getTabContent( self, params ): 
    5423  
    5424         confTZ = timezone(self._conf.getTimezone()) 
    5425  
    5426         p = WSetAlarm(self._conf, self._getAW()) 
    5427  
    5428         vars = { \ 
    5429             "cancelURL": urlHandlers.UHConfDisplayAlarm.getURL( self._conf ), \ 
    5430             "saveAlarm": urlHandlers.UHConfSaveAlarm.getURL(), \ 
    5431             "confId": self._conf.getId(), \ 
    5432             "alarmId": self._alarm.getConfRelativeId(), \ 
    5433             "confTitle": self._conf.getTitle() } 
    5434         vars["selec1"] = vars["selec2"] = vars["selec3"] = "" 
    5435         year = month = day = hour = dayBefore = hourBefore = -1 
     5352        wc = WSetAlarm(self._conf, self._getAW()) 
     5353        pars ={} 
     5354        pars["alarmId"] = self._alarm.getConfRelativeId() 
     5355        pars["timeBeforeType"] = "" 
     5356        timeBefore=0 
     5357        year = month = day = hour = minute = -1 
    54365358        if self._alarm.getTimeBefore(): 
     5359            pars["dateType"] = 2 
    54375360            #the date is calculated from the conference startdate 
    54385361            if self._alarm.getTimeBefore() < timedelta(days=1): 
    5439                 vars["selec3"] = "checked" 
    5440                 hourBefore = int(self._alarm.getTimeBefore().seconds/3600) 
     5362                pars["timeBeforeType"] = "hours" 
     5363                timeBefore = int(self._alarm.getTimeBefore().seconds/3600) 
    54415364            else: 
    54425365                #time before upper to 1 day 
    5443                 vars["selec2"] = "checked" 
    5444                 dayBefore = int(self._alarm.getTimeBefore().days) 
    5445             startyear=datetime.today().year 
     5366                pars["timeBeforeType"] = "days" 
     5367                timeBefore = int(self._alarm.getTimeBefore().days) 
    54465368        else: 
    54475369            #the date is global 
    5448             vars["selec1"] = "checked" 
    5449             startOn = self._alarm.getStartOn().astimezone(confTZ) 
     5370            pars["dateType"] = 1 
     5371            startOn = self._alarm.getStartOn().astimezone(timezone(self._conf.getTimezone())) 
    54505372            if startOn != None: 
    5451                 startyear = year = int(startOn.year) 
    5452                 month = int(startOn.month) 
    5453                 day = int(startOn.day) 
    5454                 hour = int(startOn.hour) 
    5455         vars["dayOptions"] = "" 
    5456         for i in range(1,32): 
    5457             sel = "" 
    5458             if i == day: 
    5459                 sel = "selected" 
    5460             vars["dayOptions"] += "<OPTION VALUE=\"%s\"%s>%s\n"%(string.zfill(i,2),sel,string.zfill(i,2)) 
    5461  
    5462         vars["monthOptions"] = "" 
    5463         for i in range(1,13): 
    5464             sel = "" 
    5465             if i == month: 
    5466                 sel = "selected" 
    5467             vars["monthOptions"] += "<OPTION VALUE=\"%s\"%s>%s\n"%(string.zfill(i,2),sel,datetime(1900,i,1).strftime("%B")) 
    5468  
    5469         vars["yearOptions"] = "" 
    5470         for i in range(startyear,startyear+10): 
    5471             sel = "" 
    5472             if i == year: 
    5473                 sel = "selected" 
    5474             vars["yearOptions"] += "<OPTION VALUE=\"%s\"%s>%s\n"%(string.zfill(i,4),sel,string.zfill(i,4)) 
    5475  
    5476         vars["hour"] = "" 
    5477         for i in range(0,24): 
    5478             sel = "" 
    5479             if i == hour: 
    5480                 sel = "selected" 
    5481             vars["hour"] += "<OPTION VALUE=\"%s\"%s>%sH\n"%(string.zfill(i,2),sel,string.zfill(i,2)) 
    5482  
    5483         vars["hourBefore"] = "" 
    5484         for i in range(1,24): 
    5485             sel = "" 
    5486             if i == hourBefore: 
    5487                 sel = "selected" 
    5488             vars["hourBefore"] += "<OPTION VALUE=\"%s\"%s>H-%s\n"%(string.zfill(i,2),sel,i) 
    5489  
    5490         vars["dayBefore"] = "" 
    5491         for i in range(1,8): 
    5492             sel = "" 
    5493             if i == dayBefore: 
    5494                 sel = "selected" 
    5495             vars["dayBefore"] += "<OPTION VALUE=\"%s\"%s>D-%s\n"%(string.zfill(i,2),sel,i) 
    5496  
    5497         vars["subject"] = self._alarm.getSubject() 
    5498         vars["toEmails"] = ", ".join(self._alarm.getToAddrList()) 
    5499         vars["fromEmail"] = self._alarm.getFromAddr() 
    5500         vars["text"] = self._alarm.getText() 
    5501         vars["note"] = self._alarm.getNote() 
    5502         vars["formTitle"] = _("Modify alarm data") 
    5503  
    5504         if self._alarm.getToAllParticipants() : 
    5505             vars["toAllParticipants"] = i18nformat(""" 
    5506         <tr> 
    5507             <td>&nbsp;<input type="checkbox" name="toAllParticipants" checked="checked"></td> 
    5508             <td> _("Send alarm to all participants of the event.")</td> 
    5509         </tr> 
    5510         """) 
    5511         else : 
    5512             vars["toAllParticipants"] = i18nformat(""" 
    5513         <tr> 
    5514             <td>&nbsp;<input type="checkbox" name="toAllParticipants" ></td> 
    5515             <td> _("Send alarm to all participants of the event.")</td> 
    5516         </tr> 
    5517         """) 
    5518  
    5519         testSendAlarm = i18nformat("""<input type="submit" class="btn" value="_("send this alarm now")" onClick="this.form.action='%s';">""") % urlHandlers.UHSendAlarmNow.getURL( self._conf  ) 
    5520         if self._rh._getUser(): 
    5521             testSendAlarm += i18nformat(""" <input type="submit" class="btn" value="_("send me this alarm as a test")" onClick="this.form.action='%s';">""") % urlHandlers.UHTestSendAlarm.getURL( self._conf  ) 
    5522  
    5523         vars["testSendAlarm"] = testSendAlarm 
    5524         if self._alarm.getConfSummary(): 
    5525             vars["includeConf"] = "checked" 
    5526  
    5527         return p.getHTML( vars ) 
     5373                month = startOn.month 
     5374                day = startOn.day 
     5375                hour = startOn.hour 
     5376                minute = startOn.minute 
     5377                year = startOn.year 
     5378        pars["day"] = day 
     5379        pars["month"] = month 
     5380        pars["year"] = year 
     5381        pars["hour"] = hour 
     5382        pars["minute"] = minute 
     5383        pars["timeBefore"] = timeBefore 
     5384        pars["subject"] = self._alarm.getSubject() 
     5385        pars["Emails"] = ", ".join(self._alarm.getToAddrList()) 
     5386        pars["fromAddr"] = self._alarm.getFromAddr() 
     5387        pars["text"] = self._alarm.getText() 
     5388        pars["note"] = self._alarm.getNote() 
     5389        pars["toAllParticipants"] =  self._alarm.getToAllParticipants() 
     5390        pars["includeConf"] = self._alarm.getConfSummary() 
     5391        return wc.getHTML( pars ) 
    55285392 
    55295393#---------------------------------------------------------------------------------- 
  • indico/MaKaC/webinterface/rh/conferenceModif.py

    r633342 rd917c5a  
    19221922 
    19231923    def _process( self ): 
    1924         wf = self.getWebFactory() 
    1925         if wf is not None and not self._conf.isClosed(): 
    1926             p = wf.getConfModifTools(self, self._conf) 
    1927         else: 
    1928             p = conferences.WPConfClone(self, self._target) 
     1924        p = conferences.WPConfDisplayAlarm(self, self._target) 
    19291925        return p.display() 
    19301926 
     
    31273123 
    31283124    def _process( self ): 
    3129  
    3130         wf=self.getWebFactory() 
    3131         if wf is not None: 
    3132             p = wf.getConfAddAlarm(self, self._conf) 
    3133         else : 
    3134             p = conferences.WPConfAddAlarm( self, self._conf ) 
     3125        p = conferences.WPConfAddAlarm( self, self._conf ) 
    31353126        return p.display() 
    31363127 
     
    31463137                                                        or (params.has_key("defineRecipients") and params.get("Emails","")=="")): 
    31473138            raise FormValuesError( _("""Please select the checkbox 'Send to all participants' or 'Define recipients' with a list of emails.""")) 
    3148  
    3149         params = self._getRequestParams() 
     3139        self._toAllParticipants = params.get("toAllParticipants", False) 
     3140        self._defineRecipients = params.get("defineRecipients", False) 
     3141        self._emails = params.get("Emails","") 
     3142 
     3143        if not params.has_key("dateType") or params.get("dateType","")=="": 
     3144            raise FormValuesError(_("Please choose when to send this alarm")) 
    31503145 
    31513146        self._dateType = params["dateType"] 
     
    31543149        self._day = int(params["day"]) 
    31553150        self._hour = int(params["hour"]) 
    3156         self._dayBefore = params["dayBefore"] 
    3157         self._hourBefore = params["hourBefore"] 
    3158         self._emails = params.get("Emails","") 
     3151        self._minute = int(params["minute"]) 
     3152        self._timeBefore = params["timeBefore"] 
     3153        self._timeTypeBefore = params["timeTypeBefore"] 
     3154        self._note = params.get("note","") 
     3155        self._includeConf = params.get("includeConf",None) 
     3156        self._alarmId = params.get("alarmId",None) 
     3157        self._testAlarm = False 
    31593158 
    31603159    def _initializeAlarm(self, dryRun = False): 
    3161  
    31623160        if self._dateType == "1": 
    31633161            dtStart = timezone(self._conf.getTimezone()).localize( 
     
    31653163                         self._month, 
    31663164                         self._day, 
    3167                          self._hour)).astimezone(timezone('UTC')) 
     3165                         self._hour, 
     3166                         self._minute)).astimezone(timezone('UTC')) 
    31683167            relative = None 
    31693168        else: 
    3170             if self._dateType == "2": 
    3171                 delta = timedelta(days=int(self._dayBefore)) 
    3172             elif self._dateType == "3": 
    3173                 delta = timedelta(0, int(self._hourBefore) * 3600) 
     3169            if self._timeTypeBefore=="days": 
     3170                delta = timedelta(days=int(self._timeBefore)) 
     3171            elif self._timeTypeBefore=="hours": 
     3172                delta = timedelta(0, int(self._timeBefore) * 3600) 
    31743173            dtStart = self._target.getStartDate() - delta 
    31753174            relative = delta 
    31763175 
    31773176        if self._alarmId: 
    3178             # Alarm modification 
    31793177            al = self._conf.getAlarmById(self._alarmId) 
    31803178            c = Client() 
    3181             c.moveTask(al, dtStart) 
     3179            if dryRun: 
     3180                al.setStartOn(dtStart) 
     3181                c.dequeue(al) 
     3182            else: 
     3183                c.moveTask(al, dtStart) 
    31823184            al.setRelative(relative) 
    31833185        else: 
    3184             # Alarm creation 
    3185             if dryRun: 
    3186                 al = tasks.AlarmTask(self._conf, 0, dtStart, relative=relative) 
    3187             else: 
    3188                 al = self._conf.newAlarm(relative or dtStart) 
    3189  
    3190         for addr in self._emails.split(","): 
    3191             al.addToAddr(addr.strip()) 
     3186            al = self._conf.newAlarm(relative or dtStart, enqueue=not dryRun) 
     3187 
     3188        al.setToAddrList([]) 
     3189        if(self._defineRecipients or self._testAlarm): 
     3190            for addr in self._emails.split(","): 
     3191                al.addToAddr(addr.strip()) 
    31923192 
    31933193        al.setFromAddr(self._fromAddr) 
     
    32423242            al.setConfSummary(False) 
    32433243 
     3244        al.setToAllParticipants(self._toAllParticipants) 
    32443245        self._al = al 
    32453246 
    3246  
    3247 class RHConfSendAlarm( RHCreateAlarm ): 
     3247class RHConfSendAlarmNow( RHCreateAlarm ): 
    32483248 
    32493249    def _checkParams( self, params ): 
    32503250        RHCreateAlarm._checkParams( self, params ) 
    3251         self._note = params["note"] 
    3252         if "includeConf" in params.keys(): 
    3253             self._includeConf = params["includeConf"] 
    3254         else: 
    3255             self._includeConf = None 
    3256         if "alarmId" in params.keys(): 
    3257             self._alarmId = params["alarmId"] 
    3258         else: 
    3259             self._alarmId = None 
    3260         if self._aw.getUser(): 
    3261             self._emails = self._aw.getUser().getEmail() 
    3262         else: 
    3263             self._emails = None 
    3264  
    3265     def _process( self ): 
    3266         RHCreateAlarm._process(self) 
    3267         params = self._getRequestParams() 
    3268  
    3269         if self._al: 
    3270             self._al.run(check = False) 
    3271             # if not self._alarmId: 
    3272             #    self._conf.removeAlarm(self._al) 
    3273  
    3274             if params.get("toAllParticipants", False): 
    3275                 self._al.setToAllParticipants(True) 
    3276             else : 
    3277                 self._al.setToAllParticipants(False) 
    3278  
    3279         self._redirect( urlHandlers.UHConfDisplayAlarm.getURL( self._target ) ) 
    3280  
    3281 class RHConfSendAlarmNow( RHConfSendAlarm ): 
    3282  
    3283     def _checkParams( self, params ): 
    3284         RHCreateAlarm._checkParams( self, params ) 
    3285         self._note = params["note"] 
    3286         if "includeConf" in params.keys(): 
    3287             self._includeConf = params["includeConf"] 
    3288         else: 
    3289             self._includeConf = None 
    3290         if "alarmId" in params.keys(): 
    3291             self._alarmId = params["alarmId"] 
    3292         else: 
    3293             self._alarmId = None 
    3294  
    3295         self._emails = params.get("Emails","") 
    3296  
    32973251        emails = [] 
    32983252        if self._emails != "" : 
    32993253            emails.append(self._emails) 
    3300         if params.get("toAllParticipants",None) is not None : 
    3301             for p in self._conf.getParticipation().getParticipantList() : 
    3302                 emails.append(p.getEmail()) 
     3254        if self._toAllParticipants: 
     3255            if self._conf.getType()=="conference": 
     3256                for r in self._conf.getRegistrantsList(): 
     3257                    emails.append(r.getEmail()) 
     3258            else: 
     3259                for p in self._conf.getParticipation().getParticipantList() : 
     3260                    emails.append(p.getEmail()) 
    33033261            self._emails = ", ".join(emails) 
    33043262 
    33053263        self._initializeAlarm(dryRun = True) 
    33063264 
    3307  
    3308 class ConfSendTestAlarm(RHConfSendAlarm): 
    3309  
    3310     def _checkParams( self, params ): 
    3311         RHConfSendAlarm._checkParams( self, params ) 
    3312         if not params.has_key("fromAddr") or params.get("fromAddr","")=="": 
    3313             raise FormValuesError( _("""Please choose a "FROM" address for this alarm""")) 
    3314         self._fromAddr=params.get("fromAddr") 
    3315  
    3316         self._note = params["note"] 
    3317         if "includeConf" in params.keys(): 
    3318             self._includeConf = params["includeConf"] 
    3319         else: 
    3320             self._includeConf = None 
    3321         self._alarmId = None 
    3322         if self._aw.getUser(): 
    3323             self._emails = self._aw.getUser().getEmail() 
    3324         else: 
    3325             self._emails = None 
    3326  
    3327         self._initializeAlarm(dryRun = True) 
    3328  
     3265    def _process( self ): 
     3266        RHCreateAlarm._process(self) 
     3267        if self._al: 
     3268            self._al.run(check = False) 
     3269            self._al.setStartedOn(timezoneUtils.nowutc()) 
     3270            self._al.setEndedOn(timezoneUtils.nowutc()) 
     3271        self._redirect( urlHandlers.UHConfDisplayAlarm.getURL( self._target ) ) 
    33293272 
    33303273class RHConfSaveAlarm( RHCreateAlarm ): 
    33313274 
    3332     def _createAlarm(self, dtStart): 
    3333  
    3334         if self._alarmId: 
    3335             al = self._conf.getAlarmById(self._alarmId) 
    3336         else: 
    3337             al = self._conf.newAlarm(dtStart) 
    3338  
    3339         for addr in self._emails.split(","): 
    3340             al.addToAddr(addr.strip()) 
    3341         al.setFromAddr(self._fromAddr) 
    3342         al.setSubject("Event reminder: %s"%self._target.getTitle()) 
    3343         try: 
    3344             locationText = self._target.getLocation().getName() 
    3345             if self._target.getLocation().getAddress() != "": 
    3346                 locationText += ", %s" % self._target.getLocation().getAddress() 
    3347             if self._target.getRoom().getName() != "": 
    3348                 locationText += " (%s)" % self._target.getRoom().getName() 
    3349         except: 
    3350             locationText = "" 
    3351         if locationText != "": 
    3352             locationText = i18nformat(""" _("Location"): %s""") % locationText 
    3353         fullName="%s"%self._conf.getTitle() 
    3354         if self._getUser() is not None: 
    3355             fullName = ",\n%s" % self._getUser().getStraightFullName() 
    3356         else: 
    3357             fullName = "" 
    3358         if Config.getInstance().getShortEventURL() != "": 
    3359             url = "%s%s" % (Config.getInstance().getShortEventURL(),self._target.getId()) 
    3360         else: 
    3361             url = urlHandlers.UHConferenceDisplay.getURL( self._target ) 
    3362         al.setText( _("""Hello, 
    3363     Please note that the event "%s" will begin on %s (%s). 
    3364     %s 
    3365  
    3366     You can access the full event here: 
    3367     %s 
    3368  
    3369 Best Regards%s 
    3370  
    3371     """)%(self._target.getTitle(),\ 
    3372                 self._target.getAdjustedStartDate().strftime("%A %d %b %Y at %H:%M"),\ 
    3373                 self._target.getTimezone(),\ 
    3374                 locationText,\ 
    3375                 url,\ 
    3376                 fullName,\ 
    3377                 )) 
    3378         al.setNote(self._note) 
    3379         if self._includeConf: 
    3380             if self._includeConf == "1": 
    3381                 al.setConfSumary(True) 
    3382             else: 
    3383                 al.setConfSumary(False) 
    3384         else: 
    3385             al.setConfSumary(False) 
    3386         self._al = al 
    3387  
    33883275    def _checkParams( self, params ): 
    33893276        RHCreateAlarm._checkParams( self, params ) 
    3390  
    3391         emails = [] 
    3392         if self._emails != "" : 
    3393             emails.append(self._emails) 
    3394         self._note = params["note"] 
    3395         if "includeConf" in params.keys(): 
    3396             self._includeConf = params["includeConf"] 
    3397         else: 
    3398             self._includeConf = None 
    3399         if "alarmId" in params.keys(): 
    3400             self._alarmId = params["alarmId"] 
    3401         else: 
    3402             self._alarmId = None 
    3403  
    34043277        self._initializeAlarm() 
    34053278 
    3406         if params.get("toAllParticipants", False): 
    3407             self._al.setToAllParticipants(True) 
    3408         else : 
    3409             self._al.setToAllParticipants(False) 
    3410  
    3411  
    34123279    def _process(self): 
    3413         RHCreateAlarm._process(self) 
    3414         params = self._getRequestParams() 
    3415  
    34163280        self._redirect( urlHandlers.UHConfDisplayAlarm.getURL( self._target ) ) 
    34173281 
    3418  
    3419 class RHConfdeleteAlarm( RHAlarmBase ): 
     3282class RHConfDeleteAlarm( RHAlarmBase ): 
    34203283 
    34213284    def _process(self): 
     3285        if self._alarm.getEndedOn(): 
     3286            raise MaKaCError(_("The alarm can not be deleted")) 
    34223287        self._conf.removeAlarm(self._alarm) 
    34233288        self._redirect( urlHandlers.UHConfDisplayAlarm.getURL( self._conf ) ) 
  • indico/MaKaC/webinterface/simple_event.py

    r34d140 rd917c5a  
    8787        return WPSEConfModifAC(rh, conf) 
    8888    getConfModifAC = staticmethod(getConfModifAC) 
    89  
    90     def getConfModifTools(rh, conf): 
    91         return WPSEConfDisplayAlarm(rh, conf) 
    92     getConfModifTools = staticmethod(getConfModifTools) 
    9389 
    9490    def getConfModifBookings(rh, conf, bs): 
     
    628624        return evaluations.WPEvaluationInactive._getBody(self, params) 
    629625 
    630 #################### Alarms ##################################### 
    631  
    632 class WPSEConfDisplayAlarm(WPSEConfModifToolsBase, conferences.WPConfDisplayAlarm): 
    633  
    634     def _getTabContent(self, params): 
    635         return conferences.WPConfDisplayAlarm._getTabContent(self, params) 
    636  
    637     def _setActiveTab( self ): 
    638         self._tabAlarms.setActive() 
    639  
    640  
    641 class WPSEConfAddAlarm(WPSEConfModifToolsBase, conferences.WPConfAddAlarm ): 
    642  
    643     def __init__(self, rh, conf): 
    644         WPSEConfModifToolsBase.__init__(self, rh, conf) 
    645  
    646     def _getTabContent(self, params): 
    647         params["toAllParticipants"] = """ 
    648         <tr> 
    649             <td>&nbsp;<input type="checkbox" name="toAllParticipants"></td> 
    650             <td>Send alarm to all participants of the event.</td> 
    651         </tr> 
    652         """ 
    653         return conferences.WPConfAddAlarm._getTabContent(self, params) 
    654626 
    655627################# Minutes ######################################### 
  • indico/MaKaC/webinterface/tpls/ConfDisplayAlarm.tpl

    r93bde9 rd917c5a  
     1<%from indico.util.date_time import format_datetime, format_date, format_time%> 
     2 
    13<%def name="printRecipientList(alarm)"> 
    24    <% addr = "" %> 
     
    1416 
    1517<%def name="printStartDate(alarm)"> 
    16     <% dateStart = alarm.getStartOn().astimezone(confTZ) %> 
     18    ${format_datetime(alarm.getStartOn(),format='d MMM yyyy HH:mm', timezone=confTZ)} 
    1719    % if alarm.getTimeBefore() is not None: 
    1820          <% 
     
    2022          d = tb.days 
    2123          %> 
    22           % if d < 0: 
    23                 ${dateStart.strftime(dtFormat)} 
    24           % elif d != 0: 
    25                 ${"D-%s (%s)" % (d,dateStart.strftime(dtFormat))} 
     24          % if d != 0: 
     25                ${"(Day -%s)" %d} 
    2626          % else: 
    27                 ${"H-%s (%s)" % (tb.seconds/3600,dateStart.strftime(dtFormat))} 
     27                ${"(Hour -%s )" % (tb.seconds/3600)} 
    2828          % endif 
    29     % elif dateStart is not None: 
    30           ${dateStart.strftime(dtFormat)} 
    31     % else: 
    32           ${_("not set")} 
    3329    % endif 
    3430</%def> 
    3531 
    36 <table align="center" width="90%"> 
    37   <form action="${ addAlarmURL }" method="POST"> 
    38   <tr> 
    39     <td> 
    40       <input type="submit" class="btn" value="${ _("add new alarm")}"> 
    41     </td> 
    42   </tr> 
    43   </form> 
    44 </table> 
    45  
    46 <table width="90%" align="center" border="0" style="border-left: 1px solid #777777"> 
     32<table width="100%" border="0"> 
    4733    <tr> 
    4834        <td colspan="4" nowrap class="groupTitle"> 
     
    5238    <tr> 
    5339        <td bgcolor="white" width="90%"> 
    54             <table width="100%"> 
     40            <table width="80%"> 
    5541                <tr> 
    5642                    <td nowrap class="titleCellFormat">${ _("Date")} (${ timezone }):</td> 
     
    6854                        </td> 
    6955                        <td width="60%"> 
    70                         % if al.getId(): 
    71                             % if al.getEndedOn(): 
    72                                    <span class="alarmSent"> 
    73                                        ${al.getSubject()} 
    74                                        ${ ("(" +_("Sent the ") + al.getStartedOn().astimezone(confTZ).strftime(dtFormat) +")")} 
    75                                    </span> 
    76                             % else: 
    77                                  <a href="${modifyAlarmURL}?${al.getLocator().getURLForm()}" >${al.getSubject()}</a> 
    78                             % endif 
     56                        % if al.getEndedOn(): 
     57                            <span class="alarmSent"> 
     58                                ${al.getSubject()} 
     59                                ${ ("(" +_("Sent the ") + al.getStartedOn().astimezone(confTZ).strftime(dtFormat) +")")} 
     60                            </span> 
     61                        % elif al.getId() : 
     62                            <a href="${modifyAlarmURL}?${al.getLocator().getURLForm()}" >${al.getSubject()}</a> 
    7963                        % else: 
    8064                            <span class="notScheduled"> 
     
    8569                        <td nowrap>${printRecipientList(al)}</td> 
    8670                        <td align="center"> 
    87                         % if al.getId(): 
    88                              <a href="${deleteAlarmURL}?${al.getLocator().getURLForm()}" onclick="return confirm('${_("Are you sure to delete this alarm?")}');">${_("Delete")}</a> 
     71                        % if al.getEndedOn(): 
     72                            <span class="alarmSent">${_("Delete")}</span> 
     73                        % elif al.getId(): 
     74                            <a href="${deleteAlarmURL}?${al.getLocator().getURLForm()}" onclick="return confirm('${_("Are you sure to delete this alarm?")}');">${_("Delete")}</a> 
    8975                        % else: 
    90                              <span class="notScheduled"> 
    91                                  ${_("Delete")} 
    92                              </span> 
     76                            <span class="notScheduled">${_("Delete")}</span> 
    9377                        % endif: 
    9478                        </td> 
     
    10084    </tr> 
    10185</table> 
     86 
     87<table width="100%"> 
     88  <form action="${ addAlarmURL }" method="POST"> 
     89  <tr> 
     90    <td> 
     91      <input type="submit" class="btn" value="${ _("add new alarm")}"> 
     92    </td> 
     93  </tr> 
     94  </form> 
     95</table> 
     96 
    10297<script type="text/javascript"> 
    10398IndicoUI.executeOnLoad(function(){ 
    104     $('span.alarmSent').qtip({content: '${alarmSentMsg}', position: {my: 'top middle', at: 'bottom middle'}}); 
    105     $('span.notScheduled').qtip({content: '${notScheduledMsg}', position: {my: 'top middle', at: 'bottom middle'}}); 
     99    $('span.alarmSent').qtip({content: '${"The alarm has already been sent."}', position: {my: 'top middle', at: 'bottom middle'}}); 
     100    $('span.notScheduled').qtip({content: '${_("The alarm is being scheduled, please wait some seconds and refresh the page.")}', position: {my: 'top middle', at: 'bottom middle'}}); 
    106101}); 
    107102</script> 
  • indico/MaKaC/webinterface/tpls/SetAlarm.tpl

    r4bf83c rd917c5a  
    1 <script type="text/javascript"> 
    2 <!-- 
    3 function setEmailsState() 
    4 { 
    5     if (document.getElementById("email").disabled){ 
    6         document.getElementById("email").disabled = false 
    7     } else { 
    8         document.getElementById("email").disabled = true 
    9     } 
    10 } 
    11 //--> 
    12 </script> 
    13  
    14  
    15 <center> 
    16 <table width="60%" align="center" border="0" style="border-left: 1px solid #777777"> 
     1<table width="60%" border="0"> 
    172  <tr> 
    183    <td colspan="5" class="groupTitle">${ formTitle }</td> 
     
    227<br> 
    238<TABLE border="0" align="center" width="100%"> 
    24 <form action="${ saveAlarm }" methode="POST" name="alarmForm"> 
    25 <input type="hidden" name="confId" value="${ confId }"> 
     9<form method="POST" name="alarmForm"> 
    2610<input type="hidden" name="alarmId" value="${ alarmId }"> 
    2711    <tr> 
     
    3721<tr> 
    3822    <td> 
    39         <input name="dateType" type="radio" value="1" ${ selec1 }>  ${ _("At this date")}: 
     23        <input name="dateType" type="radio" value="1" ${ "checked" if dateType == 1 else "" }>  ${ _("At this date")}: 
    4024    </td> 
    41     <td nowrap> 
    42         <SMALL> 
    43         <SELECT name=day > 
    44             ${ dayOptions } 
    45         </SELECT> 
    46         <SELECT name=month > 
    47             ${ monthOptions } 
    48         </SELECT> 
    49         <SELECT name=year > 
    50             ${ yearOptions } 
    51         </SELECT>&nbsp;&nbsp;&nbsp; 
    52         <SELECT name=hour > 
    53             ${ hour } 
    54         </SELECT> 
     25    <td nowrap class="contentCellTD"> 
     26                <span id="datePlace"></span> 
     27                <input type="hidden" id="day" name="day" value="${ day }"> 
     28                <input type="hidden" id="month"  name="month" value="${ month }"> 
     29                <input type="hidden" id="year" name="year" value="${ year }"> 
     30                <input type="hidden" id="hour" name="hour" value="${ hour }"> 
     31                <input type="hidden" id="minute" name="minute" value="${ minute }"> 
    5532        (${ timezone }) 
    5633    </td> 
     
    5835<tr> 
    5936   <td> 
    60         <input name="dateType" type="radio" value="2" ${ selec2 }> ${ _("Day before the beginning of the event")}: 
     37        <input name="dateType" type="radio" value="2" ${ "checked" if dateType == 2 else "" }> ${ _("Time before the beginning of the event")}: 
    6138    </td> 
    6239    <td> 
    63         <SELECT name=dayBefore > 
    64           ${ dayBefore } 
    65         </SELECT> 
    66   </td> 
    67 </tr> 
    68 <tr> 
    69   <td> 
    70         <input name="dateType" type="radio" value="3" ${ selec3 }> ${ _("Hours before the beginning of the event")}: 
    71     </td> 
    72     <td> 
    73         <SELECT name=hourBefore > 
    74           ${ hourBefore } 
    75         </SELECT> 
     40        <input size="3" name="timeBefore" value="${timeBefore}"> 
     41 
     42        <select name=timeTypeBefore > 
     43                <option value="hours" ${"selected" if dateType == 2 else ""}>${_("Hours")} 
     44                <option value="days" ${"selected" if dateType == 3 else ""}>${_("Days")} 
     45        </select> 
    7646  </td> 
    7747</tr> 
     
    8959        <td>&nbsp;</td> 
    9060        <td> 
    91             <select name="fromAddr" style="width:425px"> 
    92                 ${ fromOptions } 
     61            <select name="fromAddr" id="fromAddr" style="width:425px"> 
     62                <option value="">--${_("select a from address")}--</option> 
     63                % for contact in fromList: 
     64                    <option value="${contact}" ${"selected" if fromAddr.strip() == contact else ""}> 
     65                    % if contact == fromList[contact]: 
     66                        ${contact} 
     67                    % else: 
     68                        ${fromList[contact]} &#60;${contact}&#62; 
     69                    % endif 
     70                    </option> 
     71                % endfor 
    9372            </select> 
    9473        </td> 
     
    9877        <td colspan="2"><b>&nbsp; ${ _("Send alarm to")}:</b></td> 
    9978    </tr> 
    100         ${ toAllParticipants } 
    10179    <tr> 
    102         <td>&nbsp;<input type="checkbox" name="defineRecipients" onClick="setEmailsState()" ${ definedRecipients }></td> 
     80        <td>&nbsp;<input type="checkbox" name="toAllParticipants" ${"checked" if toAllParticipants else ""}></td> 
     81        <td> ${_("Send alarm to all participants of the event.")}</td> 
     82    </tr> 
     83    <tr> 
     84        <td>&nbsp;<input type="checkbox" name="defineRecipients" onClick="setEmailsState()" ${ "checked" if Emails!="" else "" }></td> 
    10385        <td> ${ _("Define recipients (comma-separated list of email addresses)")} :</td> 
    10486    </tr> 
    10587    <tr> 
    10688        <td>&nbsp;</td> 
    107         <td><input type="text" name="Emails" id="email" size="90%" ${ recipientsDisabled } value="${ toEmails }"></td> 
     89        <td><input type="text" name="Emails" id="email" size="90%" ${ "disabled='disabled'" if Emails=="" else "" }value="${ Emails }"></td> 
    10890    </tr> 
    10991    <tr><td>&nbsp;</td></tr> 
     
    11395    </tr> 
    11496        <td>&nbsp;</td> 
    115         <td align="right"><textarea name="note" rows="5" style="width:100%;" >${ note }</textarea></td> 
     97        <td align="right"><textarea id="note" name="note" rows="5" style="width:100%;" >${ note }</textarea></td> 
    11698    </tr> 
    11799    <tr> 
    118100        <td colspan="2" align="left"> 
    119101        <br> 
    120         &nbsp;<input name="includeConf" type="checkbox" value="1" ${ includeConf }> ${ _("Include a text version of the agenda in the email")} 
     102        &nbsp;<input name="includeConf" id="includeConf" type="checkbox" value="1" ${ "checked" if includeConf else ""}> ${ _("Include a text version of the agenda in the email")} 
    121103        </td> 
    122104    </tr> 
    123     </SMALL> 
    124105</table> 
    125106      </TD></tr> 
    126     <tr><td align="center" colspan="2"> 
    127         <br> 
    128         <input type="submit" class="btn" value="${ _("save the alarm")}"> ${ testSendAlarm } 
    129       </td> 
     107    <tr> 
     108        <td align="center" colspan="2"> 
     109            <br> 
     110            <input type="submit" class="btn" value="${ _("Save")}" onClick="this.form.action='${ urlHandlers.UHSaveAlarm.getURL( conference ) }'"> 
     111            <input type="submit" class="btn" value="${_("Send now")}" onClick="this.form.action='${urlHandlers.UHSendAlarmNow.getURL(conference)}';"> 
     112            <input type="submit" class="btn" value="${_("Send me as a test")}" onClick="return sendTestAlarm(this.form); return false;"> 
     113             <input type="submit" class="btn" value="${ _("Cancel")}" onClick="this.form.action='${urlHandlers.UHConfDisplayAlarm.getURL( conference )}';"> 
     114        </td> 
    130115    </tr> 
    131116</form> 
     
    135120 
    136121</table> 
    137 <form action="${ cancelURL }" method="POST"> 
    138     <input type="submit" class="btn" value="${ _("cancel")}"> 
    139 </form> 
    140 </center> 
     122 
     123<script type="text/javascript"> 
     124var setEmailsState = function () 
     125{ 
     126    if ($("#email").is(":disabled")){ 
     127        $("#email").removeAttr("disabled"); 
     128    } else { 
     129        $("#email").attr("disabled",true); 
     130    } 
     131}; 
     132 
     133var sendTestAlarm = function (form) 
     134{ 
     135    var killProgress = IndicoUI.Dialogs.Util.progress($T("Sending the test alarm...")); 
     136    indicoRequest('event.alarm.sendTestNow', { 
     137        confId: ${conference.getId()}, 
     138        fromAddr: $("#fromAddr").val(), 
     139        note: $("#note").val(), 
     140        includeConf: $("#includeConf").val(), 
     141    }, 
     142    function(result, error) { 
     143        if(error) { 
     144            IndicoUtil.errorReport(error); 
     145            killProgress(); 
     146        } else{ 
     147            killProgress(); 
     148            (new AlertPopup($T('Success'),$T("The test alarm has been succesfully sent."))).open(); 
     149        } 
     150    }); 
     151    return false; 
     152}; 
     153 
     154IndicoUI.executeOnLoad(function() 
     155{ 
     156    var dateAlarm = IndicoUI.Widgets.Generic.dateField(true,null,['day', 'month', 'year','hour', 'minute']); 
     157    $('#datePlace').append($(dateAlarm.dom)); 
     158    % if day != '': 
     159        dateAlarm.set('${ day }/${ month }/${ year } ${ hour }:${ minute }'); 
     160    % endif 
     161}); 
     162</script> 
  • indico/htdocs/confModifTools.py

    rbdd862 rd917c5a  
    5050 
    5151def testSendAlarm( req, **params ): 
    52     return conferenceModif.ConfSendTestAlarm( req ).process( params ) 
     52    return conferenceModif.RHConfSendTestAlarm( req ).process( params ) 
    5353 
    5454def sendAlarmNow( req, **params ): 
     
    5656 
    5757def deleteAlarm( req, **params ): 
    58     return conferenceModif.RHConfdeleteAlarm( req ).process( params ) 
     58    return conferenceModif.RHConfDeleteAlarm( req ).process( params ) 
    5959 
    6060def modifyAlarm( req, **params ): 
  • indico/modules/scheduler/server.py

    r11d8b5 rd917c5a  
    454454        self._db_moveTask(task, 
    455455                          oldStatus, 
    456                           base.TASK_STATUS_FAILED) 
     456                          base.TASK_STATUS_NONE) 
    457457 
    458458        self._logger.info("%s dequeued from status %s" % \ 
  • indico/modules/scheduler/tasks.py

    red28e7 rd917c5a  
    120120    def getStartedOn(self): 
    121121        return self.startedOn 
     122 
     123    def setStartedOn(self, dateTime): 
     124        self.startedOn = dateTime 
    122125 
    123126    def setOnRunningListSince(self, sometime): 
     
    650653 
    651654        if self.getToAllParticipants() : 
    652             for p in self.conf.getParticipation().getParticipantList(): 
    653                 self.addToUser(p) 
    654  
     655            if self.conf.getType()=="conference": 
     656                for r in self.conf.getRegistrantsList(): 
     657                    self.addToUser(r) 
     658            else: 
     659                for p in self.conf.getParticipation().getParticipantList() : 
     660                    self.addToUser(p) 
    655661        from MaKaC.webinterface import urlHandlers 
    656662        if Config.getInstance().getShortEventURL() != "": 
Note: See TracChangeset for help on using the changeset viewer.