Changeset af424d9 in indico
- Timestamp:
- 01/12/12 15:34:54 (17 months ago)
- Branches:
- master, hello-world-walkthrough, ipv6, v0.98-series, v0.98.2, v0.98.3, v0.99, 051b2622c51afb171a1dedb46a0df4fbb0cbd02e, 0da0c1403bae8e51d8229f460181c71b9e6dda72
- Children:
- 9201f2
- Parents:
- 38f650
- git-author:
- Alexis Castilla Hernandez <alexis.castilla.hernandez@…> (07/12/11 17:06:21)
- git-committer:
- Jose Benito <jose.benito.gonzalez@…> (01/12/12 15:34:54)
- Location:
- indico
- Files:
-
- 15 edited
-
MaKaC/services/implementation/session.py (modified) (3 diffs)
-
MaKaC/webinterface/meeting.py (modified) (3 diffs)
-
MaKaC/webinterface/pages/conferences.py (modified) (1 diff)
-
MaKaC/webinterface/pages/sessions.py (modified) (6 diffs)
-
MaKaC/webinterface/rh/conferenceModif.py (modified) (2 diffs)
-
MaKaC/webinterface/rh/sessionModif.py (modified) (3 diffs)
-
MaKaC/webinterface/tpls/SessionModifMain.tpl (modified) (2 diffs)
-
MaKaC/webinterface/urlHandlers.py (modified) (2 diffs)
-
MaKaC/webinterface/wcomponents.py (modified) (1 diff)
-
htdocs/js/indico/Core/Dialogs/Users.js (modified) (4 diffs)
-
htdocs/js/indico/Core/Widgets/UserList.js (modified) (4 diffs)
-
htdocs/js/indico/Management/Participants.js (modified) (1 diff)
-
htdocs/js/indico/Management/Sessions.js (modified) (2 diffs)
-
htdocs/sessionCreation.py (modified) (1 diff)
-
htdocs/sessionModification.py (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
indico/MaKaC/services/implementation/session.py
r10a79e raf424d9 272 272 if self._kindOfUser == "pending": 273 273 if self._kindOfList == "manager": 274 # remove pending email, self._ submitterId is an email address274 # remove pending email, self._chairId is an email address 275 275 self._session.getAccessController().revokeModificationEmail(self._chairId) 276 276 elif self._kindOfList == "coordinator": 277 chairSession = self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[self._chairId][0] 278 self._session.getConference().getPendingQueuesMgr().removePendingCoordinator(chairSession) 277 try: 278 chairSession = self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[self._chairId][0] 279 self._session.getConference().getPendingQueuesMgr().removePendingCoordinator(chairSession) 280 except KeyError: 281 # the user is not in the list of conveners (the table is not updated). Do nothing and update the list 282 pass 279 283 elif self._kindOfUser == "principal": 280 284 ph = PrincipalHolder() … … 323 327 coordinatorResult = self._getSessionChairList() 324 328 return [managerResult, coordinatorResult] 329 330 331 class SessionConvenersBase(SessionModifBase): 332 333 def _isEmailAlreadyUsed(self, email): 334 for conv in self._session.getConvenerList(): 335 if email == conv.getEmail(): 336 return True 337 return False 338 339 def _isSessionManager(self, convener): 340 # pendings managers 341 if convener.getEmail() in self._session.getAccessController().getModificationEmail(): 342 return True 343 # managers list 344 for manager in self._session.getManagerList(): 345 if convener.getEmail() == manager.getEmail(): 346 return True 347 return False 348 349 def _isSessionCoordinator(self, convener): 350 # pendings coordinators 351 if convener.getEmail() in self._session.getConference().getPendingQueuesMgr().getPendingCoordinatorsKeys(): 352 return True 353 # coordinator list 354 for coord in self._session.getCoordinatorList(): 355 if convener.getEmail() == coord.getEmail(): 356 return True 357 return False 358 359 def _setConvenerData(self, conv): 360 conv.setTitle(self._userData.get("title", "")) 361 conv.setFirstName(self._userData.get("firstName", "")) 362 conv.setFamilyName(self._userData.get("familyName", "")) 363 conv.setAffiliation(self._userData.get("affiliation", "")) 364 conv.setEmail(self._userData.get("email", "")) 365 conv.setAddress(self._userData.get("address", "")) 366 conv.setPhone(self._userData.get("phone", "")) 367 conv.setFax(self._userData.get("fax", "")) 368 369 370 def _getConvenerList(self): 371 result = [] 372 for convener in self._session.getConvenerList(): 373 convFossil = fossilize(convener) 374 convFossil["isManager"] = self._isSessionManager(convener) 375 convFossil["isCoordinator"] = self._isSessionCoordinator(convener) 376 result.append(convFossil) 377 return result 378 379 380 class SessionGetConvenerList(SessionConvenersBase): 381 382 def _getAnswer(self): 383 return self._getConvenerList() 384 385 386 class SessionAddExistingConvener(SessionConvenersBase): 387 388 def _checkParams(self): 389 SessionConvenersBase._checkParams(self) 390 pm = ParameterManager(self._params) 391 self._userList = pm.extract("userList", pType=list, allowEmpty=False) 392 # Check if there is already a user with the same email 393 for user in self._userList: 394 if self._isEmailAlreadyUsed(user["email"]): 395 raise ServiceAccessError(_("The email address (%s) of a user you are trying to add is already used by another convener or the user is already added to the list. Convener(s) not added.") % user["email"]) 396 397 def _getAnswer(self): 398 ah = AvatarHolder() 399 for user in self._userList: 400 convener = SessionChair() 401 convener.setDataFromAvatar(ah.getById(user["id"])) 402 self._session.addConvener(convener) 403 return self._getConvenerList() 404 405 406 class SessionAddNewConvener(SessionConvenersBase): 407 408 def _checkParams(self): 409 SessionConvenersBase._checkParams(self) 410 pm = ParameterManager(self._params) 411 self._userData = pm.extract("userData", pType=dict, allowEmpty=False) 412 email = self._userData.get("email", "") 413 # check if the email is empty and the user wants to give any rights 414 if (email == "" and (self._userData.get("manager", False) or self._userData.get("coordinator", False))): 415 raise ServiceAccessError(_("It is not possible to grant any rights to a convener with an empty email address. Convener not added.")) 416 if (email != "" and self._isEmailAlreadyUsed(email)): 417 raise ServiceAccessError(_("The email address (%s) is already used by another convener or the user is already added to the list. Convener not added.") % email) 418 419 def _getAnswer(self): 420 conv = SessionChair() 421 self._setConvenerData(conv) 422 self._session.addConvener(conv) 423 if (self._userData.get("manager", False)): 424 # Add to pending managers list 425 self._session.grantModification(conv) 426 if (self._userData.get("coordinator", False)): 427 # Add to pending managers list 428 self._session.addCoordinator(conv) 429 return self._getConvenerList() 430 431 432 class SessionConvenerActionBase(SessionConvenersBase): 433 434 def _checkParams(self): 435 SessionConvenersBase._checkParams(self) 436 pm = ParameterManager(self._params) 437 self._convener = self._session.getConvenerById(pm.extract("userId", pType=str, allowEmpty=False)) 438 if self._convener == None: 439 raise ServiceError("ERR-U0", _("User does not exist.")) 440 441 442 class SessionGetConvenerData(SessionConvenerActionBase): 443 444 def _getAnswer(self): 445 result = fossilize(self._convener) 446 result["isManager"] = self._isSessionManager(self._convener) 447 result["isCoordinator"] = self._isSessionCoordinator(self._convener) 448 return result 449 450 451 class SessionEditConvenerData(SessionConvenerActionBase): 452 453 def _checkParams(self): 454 SessionConvenerActionBase._checkParams(self) 455 pm = ParameterManager(self._params) 456 self._userData = pm.extract("userData", pType=dict, allowEmpty=False) 457 email = self._userData.get("email", "") 458 if (email == "" and (self._userData.get("manager", False) or self._userData.get("coordinator", False))): 459 raise ServiceAccessError(_("It is not possible to grant any rights to a convener with an empty email address. Convener not edited.")) 460 if (email != "" and self._isEmailUsedByOther()): 461 raise ServiceAccessError(_("The email address (%s) is already used by another convener. Convener data not edited.") % email) 462 463 def _isEmailUsedByOther(self): 464 for conv in self._session.getConvenerList(): 465 if self._userData.get("email") == conv.getEmail() and self._convener.getId() != conv.getId(): 466 return True 467 return False 468 469 def _getAnswer(self): 470 prevEmail = self._convener.getEmail() 471 newEmail = self._userData.get("email", "") 472 isSessionCoordinator = self._isSessionCoordinator(self._convener) 473 isSessionManager = self._isSessionManager(self._convener) 474 self._setConvenerData(self._convener) 475 if prevEmail != newEmail: 476 if isSessionCoordinator: 477 # remove the previous email in queue 478 try: 479 del self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[prevEmail] 480 # add the new email to the list 481 self._session.addCoordinator(self._convener) 482 except KeyError: 483 self._session.addCoordinator(self._convener) 484 if isSessionManager: 485 self._session.getAccessController().revokeModificationEmail(prevEmail) 486 self._session.grantModification(self._convener) 487 if (self._userData.get("manager", False)): 488 # Add to pending managers list 489 self._session.grantModification(self._convener) 490 if (self._userData.get("coordinator", False)): 491 # Add to pending managers list 492 self._session.addCoordinator(self._convener) 493 return self._getConvenerList() 494 495 496 class SessionRemoveConvener(SessionConvenerActionBase): 497 498 def _getAnswer(self): 499 self._session.removeConvener(self._convener) 500 return self._getConvenerList() 501 502 503 class SessionModifyConvenerRights(SessionConvenerActionBase): 504 505 def _checkParams(self): 506 SessionConvenerActionBase._checkParams(self) 507 pm = ParameterManager(self._params) 508 self._kindOfRights = pm.extract("kindOfRights", pType=str, allowEmpty=False) 509 510 511 class SessionGrantRights(SessionModifyConvenerRights): 512 513 def _getAnswer(self): 514 if self._convener.getEmail() != "": 515 if self._kindOfRights == "management": 516 self._session.grantModification(self._convener) 517 elif self._kindOfRights == "coordination": 518 self._session.addCoordinator(self._convener) 519 else: 520 raise ServiceAccessError(_("It is not possible to grant any rights to a convener with an empty email address. Please, set an email address for this convener.")) 521 return self._getConvenerList() 522 523 524 class SessionRevokeRights(SessionModifyConvenerRights): 525 526 def _getAnswer(self): 527 av = AvatarHolder().match({"email": self._convener.getEmail()}) 528 if self._kindOfRights == "management": 529 if not av: 530 self._session.getAccessController().revokeModificationEmail(self._convener.getEmail()) 531 else: 532 self._session.revokeModification(av[0]) 533 elif self._kindOfRights == "coordination": 534 if not av: 535 chairSession = self._session.getConference().getPendingQueuesMgr().getPendingCoordinators()[self._convener.getEmail()][0] 536 self._session.getConference().getPendingQueuesMgr().removePendingCoordinator(chairSession) 537 else: 538 self._session.removeCoordinator(av[0]) 539 return self._getConvenerList() 540 325 541 326 542 … … 338 554 "protection.addExistingCoordinator": SessionAddExistingChair, 339 555 "protection.removeCoordinator": SessionRemoveChair, 340 "protection.getCoordinatorList": SessionGetChairList 556 "protection.getCoordinatorList": SessionGetChairList, 557 558 "conveners.addExistingConvener": SessionAddExistingConvener, 559 "conveners.addNewConvener": SessionAddNewConvener, 560 "conveners.getConvenerData": SessionGetConvenerData, 561 "conveners.editConvenerData": SessionEditConvenerData, 562 "conveners.removeConvener": SessionRemoveConvener, 563 "conveners.getConvenerList": SessionGetConvenerList, 564 "conveners.grantRights": SessionGrantRights, 565 "conveners.revokeRights": SessionRevokeRights 341 566 } -
indico/MaKaC/webinterface/meeting.py
r6dc9af raf424d9 207 207 getModSlotRemConfirmation = staticmethod(getModSlotRemConfirmation) 208 208 209 def getModConvenerNew(self,session):210 return WPMModConvenerNew(self,session)211 getModConvenerNew = staticmethod(getModConvenerNew)212 213 209 def getSessionAddMaterial(self,session,mf): 214 210 return WPMSessionAddMaterial(self,session,mf) … … 238 234 return WPMSessionModifSchedule(rh,session) 239 235 getSessionModifSchedule = staticmethod(getSessionModifSchedule) 240 241 def getModConvenerEdit(rh, session):242 return WPMModConvenerEdit(rh, session)243 getModConvenerEdit = staticmethod (getModConvenerEdit)244 236 245 237 #################### Participants ##################################### … … 821 813 def _setupTabCtrl(self): 822 814 self._tabContribs.disable() 823 824 825 class WPMModConvenerEdit(sessions.WPModConvenerEdit):826 def _setupTabCtrl(self):827 self._tabContribs.disable()828 829 830 class WPMModConvenerNew(sessions.WPModConvenerNew):831 def _setupTabCtrl(self):832 self._tabContribs.disable()833 834 815 835 816 class WPMModSlotRemConfirmation(sessions.WPModSlotRemConfirmation): -
indico/MaKaC/webinterface/pages/conferences.py
r38f650 raf424d9 2777 2777 return "".join(html) 2778 2778 2779 #---------------------------------------------------------------------------2780 2781 class WPNewSessionConvenerSelect( WPConferenceModifBase ):2782 2783 def _setActiveTab( self ):2784 self._tabContribList.setActive()2785 2786 def _getTabContent( self, params ):2787 searchAction = str(self._rh.getCurrentURL())2788 searchExt = params.get("searchExt","")2789 if searchExt != "":2790 searchLocal = False2791 else:2792 searchLocal = True2793 p = wcomponents.WComplexSelection(self._conf,searchAction, forceWithoutExtAuth=searchLocal)2794 return p.getHTML(params)2795 2796 #---------------------------------------------------------------------------2797 2798 class WPNewSessionConvenerNew( WPConferenceModifBase ):2799 2800 def __init__(self, rh, conf, params):2801 WPConferenceModifBase.__init__(self, rh, conf)2802 self._params = params2803 2804 2805 def _setActiveTab( self ):2806 self._tabContribList.setActive()2807 2808 def _getTabContent( self, params ):2809 p = wcomponents.WNewPerson()2810 if self._params.get("formTitle",None) is None :2811 self._params["formTitle"] = _("Define new convener")2812 if self._params.get("titleValue",None) is None :2813 self._params["titleValue"] = ""2814 if self._params.get("surNameValue",None) is None :2815 self._params["surNameValue"] = ""2816 if self._params.get("nameValue",None) is None :2817 self._params["nameValue"] = ""2818 if self._params.get("emailValue",None) is None :2819 self._params["emailValue"] = ""2820 if self._params.get("addressValue",None) is None :2821 self._params["addressValue"] = ""2822 if self._params.get("affiliationValue",None) is None :2823 self._params["affiliationValue"] = ""2824 if self._params.get("phoneValue",None) is None :2825 self._params["phoneValue"] = ""2826 if self._params.get("faxValue",None) is None :2827 self._params["faxValue"] = ""2828 2829 self._params["disabledRole"] = False2830 self._params["roleDescription"] = i18nformat(""" _("Coordinator")<br> _("Manager")""")2831 self._params["roleValue"] = i18nformat(""" <input type="checkbox" name="coordinatorControl"> _("Give coordinator rights to the convener").<br>2832 <input type="checkbox" name="managerControl"> _("Give management rights to the convener").""")2833 self._params["disabledNotice"] = True2834 self._params["noticeValue"] = i18nformat("""<i><font color="black"><b>_("Note"): </b></font>_("If this person does not already have2835 an Indico account, he or she will be sent an email asking to create an account. After the account creation the2836 user will automatically be given coordinator/management rights.")</i>""")2837 2838 formAction = urlHandlers.UHConfNewSessionPersonAdd.getURL(self._conf)2839 formAction.addParam("orgin","new")2840 formAction.addParam("typeName","convener")2841 self._params["formAction"] = formAction2842 2843 return p.getHTML(self._params)2844 2779 2845 2780 #--------------------------------------------------------------------------- -
indico/MaKaC/webinterface/pages/sessions.py
r10a79e raf424d9 689 689 self._mfr = mfRegistry 690 690 691 def _getConvenersHTML(self):692 res=[]693 for conv in self._session.getConvenerList():694 url=urlHandlers.UHSessionModConvenerEdit.getURL(conv)695 res.append("""696 <input type="checkbox" name="selConv" value=%s> <a href=%s>%s</a>697 """%(quoteattr(str(conv.getId())),\698 quoteattr(str(url)), \699 self.htmlText(conv.getFullName())))700 return "<br>".join(res)701 702 691 def getVars( self ): 703 692 vars = wcomponents.WTemplated.getVars( self ) … … 705 694 vars["removeMaterialsURL"]=urlHandlers.UHSessionRemoveMaterials.getURL() 706 695 707 newConvenerURL = urlHandlers.UHSessionDataModificationNewConvenerCreate.getURL(self._session)708 vars["newConvenerURL"] = newConvenerURL709 searchConvenerURL = urlHandlers.UHSessionDataModificationNewConvenerSearch.getURL(self._session)710 vars["searchConvenerURL"] = searchConvenerURL711 vars["remConvenersURL"]=quoteattr(str(urlHandlers.UHSessionModConvenersRem.getURL(self._session)))712 696 vars["dataModificationURL"]=quoteattr(str(urlHandlers.UHSessionDataModification.getURL(self._session))) 713 697 vars["code"]=self.htmlText(self._session.getCode()) … … 731 715 vars["startDate"]=self.htmlText(self._session.getAdjustedStartDate().strftime("%A %d %B %Y %H:%M")) 732 716 vars["endDate"]=self.htmlText(self._session.getAdjustedEndDate().strftime("%A %d %B %Y %H:%M")) 733 vars["conveners"]=self._getConvenersHTML()734 717 vars["bgcolor"] = self._session.getColor() 735 718 vars["textcolor"] = self._session.getTextColor() … … 747 730 vars["Code"]="" 748 731 vars["Rowspan"]=4 732 vars["confId"] = self._session.getConference().getId() 733 vars["sessionId"] = self._session.getId() 749 734 return vars 750 735 … … 816 801 #--------------------------------------------------------------------------- 817 802 818 class WPSessionDataModificationConvenerSelect( WPSessionModifBase):819 820 #def _setActiveTab( self ):821 # self._tabContribList.setActive()822 823 def _getTabContent( self, params ):824 searchAction = str(self._rh.getCurrentURL())825 newButtonAction = params["newButtonAction"]826 searchExt = params.get("searchExt","")827 if searchExt != "":828 searchLocal = False829 else:830 searchLocal = True831 p = wcomponents.WComplexSelection(self._conf,searchAction, addTo = 5, forceWithoutExtAuth=searchLocal)832 return p.getHTML(params)833 834 #---------------------------------------------------------------------------835 836 class WPSessionDataModificationConvenerNew(WPSessionModifBase):837 838 #def _setActiveTab( self ):839 # self._tabContribList.setActive()840 841 def _getTabContent( self, params ):842 p = wcomponents.WNewPerson()843 844 if params.get("formTitle",None) is None :845 params["formTitle"] =_("Define new convener")846 if params.get("titleValue",None) is None :847 params["titleValue"] = ""848 if params.get("surNameValue",None) is None :849 params["surNameValue"] = ""850 if params.get("nameValue",None) is None :851 params["nameValue"] = ""852 if params.get("emailValue",None) is None :853 params["emailValue"] = ""854 if params.get("addressValue",None) is None :855 params["addressValue"] = ""856 if params.get("affiliationValue",None) is None :857 params["affiliationValue"] = ""858 if params.get("phoneValue",None) is None :859 params["phoneValue"] = ""860 if params.get("faxValue",None) is None :861 params["faxValue"] = ""862 863 864 params["disabledRole"] = False865 params["roleDescription"] = i18nformat(""" _("Coordinator")<br> _("Manager")""")866 if params.has_key("submissionControlValue") :867 params["roleValue"] = i18nformat(""" <input type="checkbox" name="coordinatorControl" checked> _("Give coordinator rights to the convener").<br>868 <input type="checkbox" name="managerControl" checked> _("Give management rights to the convener").""")869 else:870 params["roleValue"] = i18nformat(""" <input type="checkbox" name="coordinatorControl"> _("Give coordinator rights to the convener").<br>871 <input type="checkbox" name="managerControl"> _("Give management rights to the convener").""")872 params["disabledNotice"] = True873 params["noticeValue"] = i18nformat("""<i><font color="black"><b> _("Note"): </b></font> _("If this person does not already have874 an Indico account, he or she will be sent an email asking to create an account. After the account creation the875 user will automatically be given coordinator rights").</i>""")876 877 878 if params.get("formAction",None) is None :879 formAction = urlHandlers.UHSessionDataModificationPersonAdd.getURL(self._conf)880 formAction.addParam("sessionId",self._session.getId())881 formAction.addParam("orgin","new")882 formAction.addParam("typeName","convener")883 params["formAction"] = formAction884 885 return p.getHTML(params)886 887 #---------------------------------------------------------------------------888 889 803 class WPModEditDataConfirmation(WPSessionModification): 890 804 … … 894 808 url=urlHandlers.UHSessionDataModification.getURL(self._session) 895 809 return wc.getHTML(msg,url,params) 896 897 898 class WPModConvenerNew(WPSessionModification):899 900 def _getTabContent(self,params):901 caption= _("Adding a new convener")902 wc=wcomponents.WConfModParticipEdit(title=caption)903 params["postURL"]=urlHandlers.UHSessionModConvenerNew.getURL(self._session)904 params["addToManagersList"]= i18nformat("""905 <tr>906 <td nowrap class="titleCellTD">907 <span class="titleCellFormat"> _("Specific rights")</span>908 </td>909 <td bgcolor="white" width="100%%" valign="top" class="blacktext">910 <input type="radio" name="specialRights" value="none" checked> _("Do not give specific rights").<br>911 <input type="radio" name="specialRights" value="manager"> _("Give session manager rights to the convener").<br>912 <input type="radio" name="specialRights" value="coordinator"> _("Give session coordinator rights to the convener").<br><br><i><font color="black"><b> _("Note"): </b></font> _("If this person does not already have an Indico account, he or she will be sent an email asking to create an account. After the account creation the user will automatically be given the specific rights").</i>913 </td>914 </tr>915 """)916 return wc.getHTML( params )917 918 919 920 class WPModConvenerEdit(WPSessionModification):921 922 ## def _getTabContent(self,params):923 ## caption="Edit convener data"924 ## conv=params["convener"]925 ## wc=wcomponents.WConfModParticipEdit(part=conv,title=caption)926 ## params["postURL"]=urlHandlers.UHSessionModConvenerEdit.getURL(conv)927 ## params["addToManagersList"]=""928 ## return wc.getHTML(params)929 930 def _getTabContent(self,params):931 p = wcomponents.WNewPerson()932 conv = params["convener"]933 params["formTitle"] = _("Define new convener")934 params["titleValue"] = conv.getTitle()935 params["surNameValue"] = conv.getFamilyName()936 params["nameValue"] = conv.getFirstName()937 params["emailValue"] = conv.getEmail()938 params["addressValue"] = conv.getAddress()939 params["affiliationValue"] = conv.getAffiliation()940 params["phoneValue"] = conv.getPhone()941 params["faxValue"] = conv.getFax()942 943 params["disabledRole"] = False944 params["roleDescription"] = i18nformat(""" _("Coordinator")<br> _("Manager")""")945 session = conv.getSession()946 av = user.AvatarHolder().match({"email":conv.getEmail()})947 params["disabledNotice"] = True948 coordValue = i18nformat("""<input type="checkbox" name="coordinatorControl"> _("Give coordinator rights to the convener").""")949 if (av and av[0] in session.getCoordinatorList()) or conv.getEmail() in session.getCoordinatorEmailList():950 coordValue = _("""The convener is already a coordinator""")951 else:952 params["disabledNotice"] = False953 954 managerValue = i18nformat("""<input type="checkbox" name="managerControl"> _("Give management rights to the convener").""")955 if (av and av[0] in session.getManagerList() ) or conv.getEmail() in session.getAccessController().getModificationEmail():956 managerValue = _("""The convener is already a manager""")957 else:958 params["disabledNotice"] = False959 960 params["roleValue"] = """ %s<br>961 %s"""%(coordValue, managerValue)962 963 params["noticeValue"] = i18nformat("""<i><font color="black"><b> _("Note"): </b></font> _("If this person does not already have964 an Indico account, he or she will be sent an email asking to create an account. After the account creation the965 user will automatically be given coordinator/manager rights").</i>""")966 967 formAction = urlHandlers.UHSessionModConvenerEdit.getURL(conv)968 formAction.addParam("orgin","new")969 formAction.addParam("typeName","convener")970 params["formAction"] = formAction971 972 return p.getHTML(params)973 974 810 975 811 -
indico/MaKaC/webinterface/rh/conferenceModif.py
r38f650 raf424d9 960 960 else: 961 961 raise MaKaCError( _("Session title cannot be empty"), _("Session")) 962 elif self._action == "New convener":963 self._preserveParams(params)964 self._redirect(urlHandlers.UHConfNewSessionConvenerNew.getURL(self._conf))965 elif self._action == "Search convener":966 self._preserveParams(params)967 self._redirect(urlHandlers.UHConfNewSessionConvenerSearch.getURL(self._conf))968 elif self._action == "Remove conveners":969 self._removePersons(params, "convener")970 elif self._action == "Add as convener":971 self._preserveParams(params)972 url = urlHandlers.UHConfNewSessionPersonAdd.getURL(self._conf)973 url.addParam("orgin","added")974 url.addParam("typeName","convener")975 self._redirect(url)976 962 else : 977 963 p = conferences.WPConfAddSession(self,self._target,self._day) … … 1089 1075 return "".join(html) 1090 1076 1091 #-------------------------------------------------------------------------------------1092 1093 class RHNewSessionConvenerSearch( RHConferenceModifBase ):1094 _uh = urlHandlers.UHConfNewSessionConvenerSearch1095 1096 def _checkParams( self, params):1097 RHConferenceModifBase._checkParams(self,params)1098 1099 def _process( self ):1100 params = self._getRequestParams()1101 1102 params["newButtonAction"] = str(urlHandlers.UHConfNewSessionConvenerNew.getURL())1103 addURL = urlHandlers.UHConfNewSessionPersonAdd.getURL()1104 addURL.addParam("orgin","selected")1105 addURL.addParam("typeName","convener")1106 params["addURL"] = addURL1107 p = conferences.WPNewSessionConvenerSelect( self, self._target)1108 return p.display(**params)1109 1110 #-------------------------------------------------------------------------------------1111 1112 class RHNewSessionConvenerNew( RHConferenceModifBase ):1113 _uh = urlHandlers.UHConfNewSessionConvenerNew1114 1115 def _checkParams( self, params):1116 RHConferenceModifBase._checkParams(self,params)1117 1118 def _process( self ):1119 p = conferences.WPNewSessionConvenerNew( self, self._target, {})1120 1121 return p.display()1122 1123 #-------------------------------------------------------------------------------------1124 1125 class RHNewSessionPersonAdd( RHConferenceModifBase ):1126 _uh = urlHandlers.UHConfNewSessionPersonAdd1127 1128 def _checkParams( self, params):1129 RHConferenceModifBase._checkParams(self,params)1130 self._typeName = params.get("typeName",None)1131 if self._typeName is None :1132 raise MaKaCError( _("Type name of the person to add is not set."))1133 1134 def _process( self ):1135 params = self._getRequestParams()1136 self._errorList = []1137 1138 definedList = self._getDefinedList(self._typeName)1139 if definedList is None :1140 definedList = []1141 1142 if params.get("orgin","") == "new" :1143 if params.get("ok",None) is None :1144 self._redirect(urlHandlers.UHConfAddSession.getURL(self._conf))1145 return1146 else :1147 1148 if (params["email"]=="" and params.has_key("submissionControl")) or (not utils.validMail(params["email"]) and params["email"]!=""):1149 param={}1150 param["surNameValue"] = str(params["surName"])1151 param["nameValue"] = str(params["name"])1152 param["emailValue"] = str(params["email"])1153 param["titleValue"] = str(params["title"])1154 param["addressValue"] = str(params["address"])1155 param["affiliationValue"] = str(params["affiliation"])1156 param["phoneValue"] = str(params["phone"])1157 param["faxValue"] = str(params["fax"])1158 param["msg"] = "INSERT A VALID E-MAIL ADRESS"1159 if params.has_key("submissionControl"):1160 param["submissionControlValue"]="checked"1161 1162 p=conferences.WPNewSessionConvenerNew(self, self._conf, param)1163 return p.display()1164 1165 person = SessionChair()1166 person.setFirstName(params["name"])1167 person.setFamilyName(params["surName"])1168 person.setEmail(params["email"])1169 person.setAffiliation(params["affiliation"])1170 person.setAddress(params["address"])1171 person.setPhone(params["phone"])1172 person.setTitle(params["title"])1173 person.setFax(params["fax"])1174 if not self._alreadyDefined(person, definedList) :1175 definedList.append([person,params.has_key("coordinatorControl"),params.has_key("managerControl")])1176 else :1177 self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName))1178 1179 elif params.get("orgin","") == "selected" :1180 selectedList = self._normaliseListParam(self._getRequestParams().get("selectedPrincipals",[]))1181 1182 for s in selectedList :1183 if s[0:8] == "*author*" :1184 auths = self._conf.getAuthorIndex()1185 selected = auths.getById(s[9:])[0]1186 else :1187 ph = user.PrincipalHolder()1188 selected = ph.getById(s)1189 if isinstance(selected, user.Avatar) :1190 person = SessionChair()1191 person.setDataFromAvatar(selected)1192 if not self._alreadyDefined(person, definedList) :1193 definedList.append([person,params.has_key("submissionControl")])1194 else :1195 self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName))1196 1197 elif isinstance(selected, user.Group) :1198 for member in selected.getMemberList() :1199 person = SessionChair()1200 person.setDataFromAvatar(member)1201 if not self._alreadyDefined(person, definedList) :1202 definedList.append([person,params.has_key("submissionControl")])1203 else :1204 self._errorList.append( _("%s has been already defined as %s of this session"))%(presenter.getFullName(),self._typeName)1205 else :1206 person = SessionChair()1207 person.setTitle(selected.getTitle())1208 person.setFirstName(selected.getFirstName())1209 person.setFamilyName(selected.getFamilyName())1210 person.setEmail(selected.getEmail())1211 person.setAddress(selected.getAddress())1212 person.setAffiliation(selected.getAffiliation())1213 person.setPhone(selected.getPhone())1214 person.setFax(selected.getFax())1215 if not self._alreadyDefined(person, definedList) :1216 definedList.append([person,params.has_key("coordinatorControl"),params.has_key("managerControl")])1217 else :1218 self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName))1219 1220 elif params.get("orgin","") == "added" :1221 preservedParams = self._getPreservedParams()1222 chosen = preservedParams.get("%sChosen"%self._typeName,None)1223 if chosen is None or chosen == "" :1224 self._redirect(urlHandlers.UHConfAddSession.getURL(self._target))1225 return1226 index = chosen.find("-")1227 1228 chosenPerson = None1229 1230 if index == -1:1231 ah = user.AvatarHolder()1232 chosenPerson = SessionChair()1233 chosenPerson.setDataFromAvatar(ah.getById(chosen))1234 else:1235 objectId = chosen[1:index]1236 chosenId = chosen[index+1:len(chosen)]1237 if chosen[0:1] == "d" :1238 object = self._conf.getSessionById(objectId)1239 else :1240 object = self._conf.getContributionById(objectId)1241 if chosen[0:1] == "s" :1242 chosenPerson = object.getSpeakerById(chosenId)1243 elif chosen[0:1] == "a" :1244 chosenPerson = object.getAuthorById(chosenId)1245 elif chosen[0:1] == "c" :1246 chosenPerson = object.getCoAuthorById(chosenId)1247 elif chosen[0:1] == "d" :1248 chosenPerson = object.getConvenerById(chosenId)1249 if chosenPerson is None :1250 self._redirect(urlHandlers.UHConfModScheduleNewContrib.getURL(self._target))1251 return1252 person = SessionChair()1253 person.setTitle(chosenPerson.getTitle())1254 person.setFirstName(chosenPerson.getFirstName())1255 person.setFamilyName(chosenPerson.getFamilyName())1256 person.setEmail(chosenPerson.getEmail())1257 person.setAddress(chosenPerson.getAddress())1258 person.setAffiliation(chosenPerson.getAffiliation())1259 person.setPhone(chosenPerson.getPhone())1260 person.setFax(chosenPerson.getFax())1261 if not self._alreadyDefined(person, definedList) :1262 definedList.append([person,params.has_key("coordinatorControl"),params.has_key("managerControl")])1263 else :1264 self._errorList.append( _("%s has been already defined as %s of this session")%(person.getFullName(),self._typeName))1265 else :1266 self._redirect(urlHandlers.UHConfModifSchedule.getURL(self._target))1267 return1268 preservedParams = self._getPreservedParams()1269 preservedParams["errorMsg"] = self._errorList1270 self._preserveParams(preservedParams)1271 self._websession.setVar("%sList"%self._typeName,definedList)1272 1273 self._redirect(urlHandlers.UHConfAddSession.getURL(self._conf))1274 1275 1276 def _getDefinedList(self, typeName):1277 definedList = self._websession.getVar("%sList"%typeName)1278 if definedList is None :1279 return []1280 return definedList1281 1282 def _alreadyDefined(self, person, definedList):1283 if person is None :1284 return True1285 if definedList is None :1286 return False1287 fullName = person.getFullName()1288 for p in definedList :1289 if p[0].getFullName() == fullName :1290 return True1291 return False1292 1293 def _getPreservedParams(self):1294 params = self._websession.getVar("preservedParams")1295 if params is None :1296 return {}1297 return params1298 1299 def _preserveParams(self, params):1300 self._websession.setVar("preservedParams",params)1301 def _removePreservedParams(self):1302 self._websession.setVar("preservedParams",None)1303 1077 1304 1078 #------------------------------------------------------------------------------------- -
indico/MaKaC/webinterface/rh/sessionModif.py
r10a79e raf424d9 277 277 self._redirect(url) 278 278 return 279 elif self._action == "New convener" :280 self._preserveParams(params)281 url = urlHandlers.UHSessionDataModificationConvenerSearch.getURL(self._conf)282 url.addParam("sessionId",self._session.getId())283 284 self._redirect(url)285 elif self._action == "Remove conveners" :286 self._removePersons(params, "convener")287 elif self._action == "Add convener" :288 self._preserveParams(params)289 url = urlHandlers.UHSessionDataModificationPersonAdd.getURL(self._conf)290 url.addParam("sessionId",self._session.getId())291 url.addParam("orgin","added")292 url.addParam("typeName","convener")293 self._redirect(url)294 279 p=sessions.WPSessionDataModification(self,self._target) 295 280 wf = self.getWebFactory() … … 372 357 #------------------------------------------------------------------------------------- 373 358 374 class RHSessionDataModificationConvenerSearch( RHSessionModifBase):375 _uh = urlHandlers.UHSessionDataModificationConvenerSearch376 377 def _checkParams( self, params):378 RHSessionModifBase._checkParams(self,params)379 380 def _process( self ):381 params = self._getRequestParams()382 383 params["newButtonAction"] = str(urlHandlers.UHSessionDataModificationConvenerNew.getURL())384 385 addURL = urlHandlers.UHSessionDataModificationPersonAdd.getURL()386 addURL.addParam("orgin","selected")387 addURL.addParam("typeName","convener")388 params["addURL"] = addURL389 p = sessions.WPSessionDataModificationConvenerSelect( self, self._target)390 return p.display(**params)391 392 #-------------------------------------------------------------------------------------393 394 class RHSessionDataModificationConvenerNew( RHSessionModifBase ):395 _uh = urlHandlers.UHSessionDataModificationConvenerNew396 397 def _checkParams( self, params):398 RHSessionModifBase._checkParams(self,params)399 400 def _process( self ):401 p = sessions.WPSessionDataModificationConvenerNew( self, self._target)402 return p.display()403 404 #-------------------------------------------------------------------------------------405 406 class RHSessionDataModificationPersonAdd( RHSessionModifBase ):407 _uh = urlHandlers.UHSessionDataModificationPersonAdd408 409 def _checkParams( self, params):410 RHSessionModifBase._checkParams(self,params)411 self._typeName = params.get("typeName",None)412 if self._typeName is None :413 raise MaKaCError( _("Type name of the person to add is not set."))414 415 def _process( self ):416 params = self._getRequestParams()417 self._errorList = []418 419 definedList = self._getDefinedList(self._typeName)420 if definedList is None :421 definedList = []422 423 if params.get("orgin","") == "new" :424 if params.get("ok",None) is None :425 url = urlHandlers.UHSessionDataModification.getURL(self._conf)426 url.addParam("sessionId",self._session.getId())427 self._redirect(url)428 return429 else :430 person = SessionChair()431 person.setFirstName(params["name"])432 person.setFamilyName(params["surName"])433 person.setEmail(params["email"])434 person.setAffiliation(params["affiliation"])435 person.setAddress(params["address"])436 person.setPhone(params["phone"])437 person.setTitle(params["title"])438 person.setFax(params["fax"])439 if not self._alreadyDefined(person, self._typeName) :440 self._session.addConvener(person)441 if params.has_key("submissionControl") :442 self._session.grantSubmission(person)443 else :444 self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName))445 446 elif params.get("orgin","") == "selected" :447 selectedList = self._normaliseListParam(self._getRequestParams().get("selectedPrincipals",[]))448 449 for s in selectedList :450 if s[0:8] == "*author*" :451 auths = self._conf.getAuthorIndex()452 selected = auths.getById(s)453 else :454 ph = user.PrincipalHolder()455 selected = ph.getById(s)456 if isinstance(selected, user.Avatar) :457 person = SessionChair()458 person.setDataFromAvatar(selected)459 if not self._alreadyDefined(person, self._typeName) :460 self._session.addConvener(person)461 if params.has_key("submissionControl") :462 self._session.grantSubmission(person)463 else :464 self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName))465 466 elif isinstance(selected, user.Group) :467 for member in selected.getMemberList() :468 person = SessionChair()469 person.setDataFromAvatar(member)470 if not self._alreadyDefined(person, self._typeName) :471 self._session.addConvener(person)472 if params.has_key("submissionControl") :473 self._session.grantSubmission(person)474 else :475 self._errorList.append("%s has been already defined as %s of this session"%(presenter.getFullName(),self._typeName))476 else :477 person = SessionChair()478 person.setTitle(selected.getTitle())479 person.setFirstName(selected.getFirstName())480 person.setFamilyName(selected.getFamilyName())481 person.setEmail(selected.getEmail())482 person.setAddress(selected.getAddress())483 person.setAffiliation(selected.getAffiliation())484 person.setPhone(selected.getPhone())485 person.setFax(selected.getFax())486 if not self._alreadyDefined(person, self._typeName) :487 self._session.addConvener(person)488 if params.has_key("submissionControl") :489 self._session.grantSubmission(person)490 else :491 self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName))492 493 elif params.get("orgin","") == "added" :494 preservedParams = self._getPreservedParams()495 chosen = preservedParams.get("%sChosen"%self._typeName,None)496 if chosen is None or chosen == "" :497 url = urlHandlers.UHSessionDataModification.getURL(self._conf)498 url.addParam("sessionId",self._session.getId())499 self._redirect(url)500 return501 index = chosen.find("-")502 objectId = chosen[1:index]503 chosenId = chosen[index+1:len(chosen)]504 if chosen[0:1] == "d" :505 object = self._conf.getSessionById(objectId)506 else :507 object = self._conf.getContributionById(objectId)508 chosenPerson = None509 if chosen[0:1] == "s" :510 chosenPerson = object.getSpeakerById(chosenId)511 elif chosen[0:1] == "a" :512 chosenPerson = object.getAuthorById(chosenId)513 elif chosen[0:1] == "c" :514 chosenPerson = object.getCoAuthorById(chosenId)515 elif chosen[0:1] == "d" :516 chosenPerson = object.getConvenerById(chosenId)517 if chosenPerson is None :518 self._redirect(urlHandlers.UHConfModScheduleNewContrib.getURL(self._target))519 return520 person = SessionChair()521 person.setTitle(chosenPerson.getTitle())522 person.setFirstName(chosenPerson.getFirstName())523 person.setFamilyName(chosenPerson.getFamilyName())524 person.setEmail(chosenPerson.getEmail())525 person.setAddress(chosenPerson.getAddress())526 person.setAffiliation(chosenPerson.getAffiliation())527 person.setPhone(chosenPerson.getPhone())528 person.setFax(chosenPerson.getFax())529 if not self._alreadyDefined(person, self._typeName) :530 self._session.addConvener(person)531 if params.has_key("submissionControl") :532 self._session.grantSubmission(person)533 else :534 self._errorList.append("%s has been already defined as %s of this session"%(person.getFullName(),self._typeName))535 else :536 url = urlHandlers.UHSessionDataModification.getURL(self._conf)537 url.addParam("sessionId",self._session.getId())538 self._redirect(url)539 return540 preservedParams = self._getPreservedParams()541 preservedParams["errorMsg"] = self._errorList542 self._preserveParams(preservedParams)543 self._websession.setVar("%sList"%self._typeName,definedList)544 545 url = urlHandlers.UHSessionDataModification.getURL(self._conf)546 url.addParam("sessionId",self._session.getId())547 self._redirect(url)548 549 550 def _getDefinedList(self, typeName):551 definedList = self._websession.getVar("%sList"%typeName)552 if definedList is None :553 return []554 return definedList555 556 def _alreadyDefined(self, person, typeName):557 if person is None :558 return True559 if typeName is None :560 return True561 fullName = person.getFullName()562 list = None563 if typeName == "convener" :564 list = self._session.getConvenerList()565 for p in list :566 if p.getFullName() == fullName :567 return True568 return False569 570 def _getPreservedParams(self):571 params = self._websession.getVar("preservedParams")572 if params is None :573 return {}574 return params575 576 def _preserveParams(self, params):577 self._websession.setVar("preservedParams",params)578 def _removePreservedParams(self):579 self._websession.setVar("preservedParams",None)580 581 #-------------------------------------------------------------------------------------582 583 class RHSessionDataModificationNewConvenerCreate( RHSessionModifBase ):584 _uh = urlHandlers.UHSessionDataModificationNewConvenerCreate585 586 def _checkParams( self, params):587 RHSessionModifBase._checkParams(self,params)588 589 def _process( self ):590 591 params = self._getRequestParams()592 formAction = urlHandlers.UHSessionDataModificationConvenerAdd.getURL(self._conf)593 formAction.addParam("sessionId",self._session.getId())594 formAction.addParam("orgin","new")595 formAction.addParam("typeName","convener")596 params["formAction"] = formAction597 p = sessions.WPSessionDataModificationConvenerNew( self, self._target)598 return p.display(**params)599 600 #-------------------------------------------------------------------------------------601 602 class RHSessionDataModificationNewConvenerSearch( RHSessionModifBase):603 _uh = urlHandlers.UHSessionDataModificationNewConvenerSearch604 605 def _checkParams( self, params):606 RHSessionModifBase._checkParams(self,params)607 608 def _process( self ):609 params = self._getRequestParams()610 611 params["newButtonAction"] = str(urlHandlers.UHSessionDataModificationNewConvenerCreate.getURL())612 addURL = urlHandlers.UHSessionDataModificationConvenerAdd.getURL()613 addURL.addParam("orgin","selected")614 addURL.addParam("typeName","convener")615 params["addURL"] = addURL616 p = sessions.WPSessionDataModificationConvenerSelect( self, self._target)617 return p.display(**params)618 619 #-------------------------------------------------------------------------------------620 621 class RHSessionDataModificationConvenerAdd( RHSessionModifBase ):622 _uh = urlHandlers.UHSessionDataModificationConvenerAdd623 624 def _checkParams( self, params):625 RHSessionModifBase._checkParams(self,params)626 self._typeName = params.get("typeName",None)627 if self._typeName is None :628 raise MaKaCError( _("Type name of the person to add is not set."))629 630 def _process( self ):631 params = self._getRequestParams()632 self._errorList = []633 634 if params.get("orgin","") == "new" :635 if params.get("ok",None) is None :636 url = urlHandlers.UHSessionModification.getURL(self._conf)637 url.addParam("sessionId",self._session.getId())638 self._redirect(url)639 return640 else :641 person = SessionChair()642 person.setFirstName(params["name"])643 person.setFamilyName(params["surName"])644 person.setEmail(params["email"])645 person.setAffiliation(params["affiliation"])646 person.setAddress(params["address"])647 person.setPhone(params["phone"])648 person.setTitle(params["title"])649 person.setFax(params["fax"])650 651 self._session.addConvener(person)652 if params.has_key("coordinatorControl") :653 self._session.addCoordinator(person)654 if params.has_key("managerControl") :655 self._session.grantModification(person)656 657 elif params.get("orgin","") == "selected" and not "cancel" in params:658 selectedList = self._normaliseListParam(self._getRequestParams().get("selectedPrincipals",[]))659 660 for s in selectedList :661 if s[0:8] == "*author*" :662 auths = self._conf.getAuthorIndex()663 selected = auths.getById(s[9:])[0]664 else :665 ph = user.PrincipalHolder()666 selected = ph.getById(s)667 if isinstance(selected, user.Avatar) :668 person = SessionChair()669 person.setDataFromAvatar(selected)670 self._session.addConvener(person)671 if params.has_key("coordinatorControl") :672 self._session.addCoordinator(person)673 if params.has_key("managerControl") :674 self._session.grantModification(person)675 676 elif isinstance(selected, user.Group) :677 for member in selected.getMemberList() :678 person = SessionChair()679 person.setDataFromAvatar(member)680 self._session.addConvener(person)681 if params.has_key("coordinatorControl") :682 self._session.addCoordinator(person)683 if params.has_key("managerControl") :684 self._session.grantModification(person)685 686 else :687 person = SessionChair()688 person.setTitle(selected.getTitle())689 person.setFirstName(selected.getFirstName())690 person.setFamilyName(selected.getFamilyName())691 person.setEmail(selected.getEmail())692 person.setAddress(selected.getAddress())693 person.setAffiliation(selected.getAffiliation())694 person.setPhone(selected.getPhone())695 person.setFax(selected.getFax())696 self._session.addConvener(person)697 if params.has_key("coordinatorControl") :698 self._session.addCoordinator(person)699 if params.has_key("managerControl") :700 self._session.grantModification(person)701 702 else :703 url = urlHandlers.UHSessionModification.getURL(self._conf)704 url.addParam("sessionId",self._session.getId())705 self._redirect(url)706 return707 708 url = urlHandlers.UHSessionModification.getURL(self._conf)709 url.addParam("sessionId",self._session.getId())710 self._redirect(url)711 712 713 #-------------------------------------------------------------------------------------714 715 359 class RHSessionClose( RHSessionModifBase ): 716 360 _uh = urlHandlers.UHSessionClose … … 726 370 self._target.setClosed(False) 727 371 self._redirect(urlHandlers.UHSessionModification.getURL(self._target)) 728 729 class RHConvenerNew(RHSessionModifBase):730 _uh=urlHandlers.UHSessionModConvenerNew731 732 def _checkParams(self, params):733 RHSessionModifBase._checkParams(self,params)734 self._action=""735 if params.has_key("ok"):736 self._action = "perform"737 elif params.has_key("cancel"):738 self._action = "cancel"739 740 def _newConvener(self):741 c=conference.SessionChair()742 p=self._getRequestParams()743 c.setTitle(p.get("title",""))744 c.setFirstName(p.get("name",""))745 c.setFamilyName(p.get("surName",""))746 c.setAffiliation(p.get("affiliation",""))747 c.setEmail(p.get("email",""))748 c.setAddress(p.get("address",""))749 c.setPhone(p.get("phone",""))750 c.setFax(p.get("fax",""))751 self._target.addConvener(c)752 return c753 754 def _process(self):755 if self._action!="":756 if self._action=="perform":757 conv=self._newConvener()758 sr=self._getRequestParams().get("specialRights","none")759 if sr in ["manager","coordinator"]:760 if self._getRequestParams().get("email","").strip() == "":761 raise FormValuesError("If you want to add specific righst to this convener, please enter their email")762 if sr == "manager":763 self._target.grantModification(conv)764 elif sr == "coordinator":765 self._target.addCoordinator(conv)766 url=urlHandlers.UHSessionModification.getURL(self._target)767 self._redirect(url)768 else:769 p=sessions.WPModConvenerNew(self,self._session)770 wf = self.getWebFactory()771 if wf != None:772 p = wf.getModConvenerNew(self,self._session)773 return p.display(**self._getRequestParams())774 775 776 class RHConvenersRem( RHSessionModifBase ):777 _uh = urlHandlers.UHSessionModConvenersRem778 779 def _checkParams( self, params ):780 RHSessionModifBase._checkParams( self, params )781 self._conv=[]782 for id in self._normaliseListParam(params.get("selConv",[])):783 self._conv.append(self._target.getConvenerById(id))784 785 def _process( self ):786 for conv in self._conv:787 self._session.removeConvener(conv)788 self._redirect(urlHandlers.UHSessionModification.getURL(self._session))789 790 791 class RHConvenerEdit(RHSessionModifBase):792 793 def _checkParams(self,params):794 RHSessionModifBase._checkParams(self, params)795 self._convId=params["convId"]796 self._action=""797 if params.has_key("ok"):798 self._action = "perform"799 elif params.has_key("cancel"):800 self._action = "cancel"801 802 def _setConvenerData(self):803 c=self._target.getConvenerById(self._convId)804 p = self._getRequestParams()805 c.setTitle(p.get("title",""))806 c.setFirstName(p.get("name",""))807 c.setFamilyName(p.get("surName",""))808 c.setAffiliation(p.get("affiliation",""))809 c.setAddress(p.get("address",""))810 c.setPhone(p.get("phone",""))811 c.setFax(p.get("fax",""))812 813 c.setEmail(p.get("email",""))814 815 if p.get("coordinatorControl", None):816 self._target.addCoordinator(c)817 if p.get("managerControl", None):818 self._target.grantModification(c)819 820 ## grant=0821 ## if c.getEmail().lower().strip() != p.get("email","").lower().strip():822 ## #----If it's already in the pending queue in order to grant823 ## # modification/coordination rights we must unindex and after the modification of the email,824 ## # index again...825 ## if self._target.getConference().getPendingQueuesMgr().isPendingManager(c):826 ## self._target.getConference().getPendingQueuesMgr().removePendingManager(c)827 ## grant=1828 ## if self._target.getConference().getPendingQueuesMgr().isPendingCoordinator(c):829 ## self._target.getConference().getPendingQueuesMgr().removePendingCoordinator(c)830 ## grant=2831 ## #-----832 833 ## c.setEmail(p.get("email",""))834 ##835 ## if grant==1:836 ## self._target.grantModification(c)837 ## if grant==2:838 ## self._target.addCoordinator(c)839 840 841 def _process(self):842 if self._action != "":843 if self._action == "perform":844 self._setConvenerData()845 url=urlHandlers.UHSessionModification.getURL(self._target)846 self._redirect(url)847 else:848 c=self._target.getConvenerById(self._convId)849 p=sessions.WPModConvenerEdit(self,self._target)850 wf = self.getWebFactory()851 if wf != None:852 p = wf.getModConvenerEdit(self, self._target)853 return p.display(convener=c)854 372 855 373 -
indico/MaKaC/webinterface/tpls/SessionModifMain.tpl
rc0de5a raf424d9 43 43 <tr> 44 44 <td class="dataCaptionTD"><span class="dataCaptionFormat"> ${ _("Default conveners")}</span></td> 45 <form action=${ remConvenersURL } method="POST">46 45 <td colspan="2"> 47 <table width="100%"><tr> 48 <td bgcolor="white" valign="top" class="blacktext"> 49 ${ conveners } 50 </td> 51 <td align="right" valign="bottom"> 52 <table> 53 <tr> 54 <td> 55 <input type="submit" class="btn" value="${ _("remove")}"> 56 </td> 57 </form> 58 <form action=${ newConvenerURL } method="POST"> 59 <td> 60 <input type="submit" class="btn" value="${ _("new")}"> 61 </td> 62 </form> 63 <form action=${ searchConvenerURL } method="POST"> 64 <td> 65 <input type="submit" class="btn" value="${ _("search")}"> 66 </td> 67 </form> 68 </tr> 69 </table> 70 </td> 71 </tr></table> 72 </td> 46 <table width="100%"> 47 <tr> 48 <td style="width: 80%"><ul id="inPlaceConveners" class="UIPeopleList"></ul></td> 49 <td nowrap valign="top" style="width: 20%; text-align:right;"> 50 <span id="inPlaceConvenersMenu" onmouseover="this.className = 'mouseover'" onmouseout="this.className = ''"> 51 <a class="dropDownMenu fakeLink" style="margin-left: 15px; margin-right: 15px" onclick="convenerManager.addManagementMenu();">${ _("Add convener")}</a> 52 </span> 53 </td> 54 </tr> 55 </table> 56 </td> 73 57 </tr> 74 58 <tr> … … 76 60 </tr> 77 61 </table> 62 63 <script> 64 65 var convenerManager = new SessionConvenerManager('${ confId }', '${ sessionId }', $E('inPlaceConveners'), $E('inPlaceConvenersMenu'), 66 "convener"); 67 68 </script> -
indico/MaKaC/webinterface/urlHandlers.py
r10a79e raf424d9 1138 1138 _relativeURL = "confModifSchedule.py/performAddSession" 1139 1139 1140 class UHConfNewSessionConvenerSearch(URLHandler):1141 _relativeURL = "sessionCreation.py/convenerSearch"1142 1143 class UHConfNewSessionConvenerNew(URLHandler):1144 _relativeURL = "sessionCreation.py/convenerNew"1145 1146 class UHConfNewSessionPersonAdd(URLHandler):1147 _relativeURL = "sessionCreation.py/personAdd"1148 1149 class UHSessionDataModificationConvenerSearch(URLHandler):1150 _relativeURL = "sessionModification.py/convenerSearch"1151 1152 class UHSessionDataModificationConvenerNew(URLHandler):1153 _relativeURL = "sessionModification.py/convenerNew"1154 1155 class UHSessionDataModificationPersonAdd(URLHandler):1156 _relativeURL = "sessionModification.py/personAdd"1157 1158 class UHSessionDataModificationNewConvenerSearch(URLHandler):1159 _relativeURL = "sessionModification.py/newConvenerSearch"1160 1161 class UHSessionDataModificationNewConvenerCreate(URLHandler):1162 _relativeURL = "sessionModification.py/newConvenerCreate"1163 1164 class UHSessionDataModificationConvenerAdd(URLHandler):1165 _relativeURL = "sessionModification.py/convenerAdd"1166 1140 1167 1141 class UHConfAddContribution( URLHandler ): … … 2446 2420 class UHSessionDatesModification( URLHandler ): 2447 2421 _relativeURL = "sessionModification.py/modifyDates" 2448 2449 class UHSessionModConvenerNew( URLHandler ):2450 _relativeURL = "sessionModification.py/newConvener"2451 2452 2453 class UHSessionModConvenersRem( URLHandler ):2454 _relativeURL = "sessionModification.py/remConveners"2455 2456 2457 class UHSessionModConvenerEdit( URLHandler ):2458 _relativeURL = "sessionModification.py/editConvener"2459 2460 2422 2461 2423 class UHSessionModSlotConvenerNew( URLHandler ): -
indico/MaKaC/webinterface/wcomponents.py
r38f650 raf424d9 4534 4534 4535 4535 4536 class WConfModParticipEdit(WTemplated):4537 4538 def __init__(self,title="",part=None):4539 self._part=part4540 self._ctitle=title4541 4542 def getVars(self):4543 vars=WTemplated.getVars(self)4544 vars["postURL"]=quoteattr(str(vars["postURL"]))4545 vars["caption"]=self.htmlText(self._ctitle)4546 title,firstName,familyName="","",""4547 affiliation,email,address,phone,fax="","","","",""4548 if self._part is not None:4549 title=self._part.getTitle()4550 firstName=self._part.getFirstName()4551 familyName=self._part.getFamilyName()4552 affiliation=self._part.getAffiliation()4553 email=self._part.getEmail()4554 address=self._part.getAddress()4555 phone=self._part.getPhone()4556 fax=self._part.getFax()4557 vars["titles"]=TitlesRegistry().getSelectItemsHTML(title)4558 vars["surName"]=quoteattr(familyName)4559 vars["name"]=quoteattr(firstName)4560 vars["affiliation"]=quoteattr(affiliation)4561 vars["email"]=quoteattr(email)4562 vars["address"]=address4563 vars["phone"]=quoteattr(phone)4564 vars["fax"]=quoteattr(fax)4565 if not vars.has_key("addToManagersList"):4566 vars["addToManagersList"]=""4567 return vars4568 4569 4536 class WSessionModEditDataCode(WTemplated): 4570 4537 -
indico/htdocs/js/indico/Core/Dialogs/Users.js
rcb55f2 raf424d9 1283 1283 self.parameterManager = new IndicoUtil.parameterManager(); 1284 1284 1285 var grant = [];1285 var grantSubmission = []; 1286 1286 var grantManagement = []; 1287 var grantCoordination = []; 1287 1288 var warning = []; 1288 1289 if (this.grantSubmission) { 1289 grant = [$T('Grant submission rights'), $B(Html.checkbox({}), userData.accessor('submission'))];1290 grantSubmission = [$T('Grant submission rights'), $B(Html.checkbox({}), userData.accessor('submission'))]; 1290 1291 warning = [Html.span({}, Html.span({style:{fontWeight:'bold'}}, $T('Note:')), $T(' If this person does not already have an Indico account, '), Html.br(), 1291 1292 $T('he or she will be sent an email asking to register as a user.'), Html.br(), … … 1299 1300 $T(' After the account creation the user will automatically be'), Html.br(), 1300 1301 $T(' given management rights.'))]; 1302 } 1303 1304 if (this.grantCoordination) { 1305 grantCoordination = [$T('Give coordination rights.'), $B(Html.checkbox({}), userData.accessor('coordinator'))]; 1306 warning = [Html.span({}, Html.span({style:{fontWeight:'bold'}}, $T('Note:')), $T(' If this person does not already have an Indico account, '), Html.br(), 1307 $T('he or she will be sent an email asking to create an account.'), Html.br(), 1308 $T(' After the account creation the user will automatically be'), Html.br(), 1309 $T(' given coordination rights.'))]; 1310 } 1311 if (this.grantManagement && this.grantCoordination) { 1312 warning = [Html.span({}, Html.span({style:{fontWeight:'bold'}}, $T('Note:')), $T(' If this person does not already have an Indico account, '), Html.br(), 1313 $T('he or she will be sent an email asking to create an account.'), Html.br(), 1314 $T(' After the account creation the user will automatically be'), Html.br(), 1315 $T(' given the rights.'))]; 1301 1316 } 1302 1317 … … 1310 1325 [$T('Telephone'), $B(Html.edit({style: {width: '150px'}}), userData.accessor('phone'))], 1311 1326 [$T('Fax'), $B(Html.edit({style: {width: '150px'}}), userData.accessor('fax'))], 1312 grant , grantManagement, warning]);1327 grantSubmission, grantManagement, grantCoordination, warning]); 1313 1328 1314 1329 return this.ExclusivePopupWithButtons.prototype.draw.call(this, form); … … 1330 1345 1331 1346 }, 1332 function(title, userData, action, grantSubmission, grantManagement, allowEmptyEmail) {1347 function(title, userData, action, grantSubmission, grantManagement, grantCoordination, allowEmptyEmail) { 1333 1348 this.userData = userData; 1334 1349 this.action = action; 1335 1350 this.grantSubmission = exists(grantSubmission)?grantSubmission:false; 1336 1351 this.grantManagement = exists(grantManagement)?grantManagement:false; 1352 this.grantCoordination = exists(grantCoordination)?grantCoordination:false; 1337 1353 this.allowEmptyEmail = exists(allowEmptyEmail)?allowEmptyEmail:true; 1338 1354 this.ExclusivePopup(title, function(){return true;}); -
indico/htdocs/js/indico/Core/Widgets/UserList.js
ra4433d raf424d9 18 18 * @param: showGrantSubmissionCB -> Bool, show the checkbox to grant submission rights in the AddNew/Edit popup 19 19 * @param: showAffiliation -> Bool, show the affiliation of the user 20 * @param: showGrantCoordinationCB -> Bool, show the checkbox to grant coordination rights in the AddNew/Edit popup 20 21 */ 21 22 type("ListOfUsersManager", [], { … … 237 238 newUserPopup.close(); 238 239 } 239 }, self.showGrantSubmissionCB, self.showGrantManagementCB );240 }, self.showGrantSubmissionCB, self.showGrantManagementCB, self.showGrantCoordinationCB); 240 241 newUserPopup.open(); 241 242 }, … … 260 261 261 262 function(confId, methods, userListParams, inPlaceListElem, showRemoveIcon, showEditIcon, showFavouritesIcon, showOrderArrows, 262 kindOfUser, userCaption, elementClass, showGrantSubmissionCB, showGrantManagementCB, showAffiliation ) {263 kindOfUser, userCaption, elementClass, showGrantSubmissionCB, showGrantManagementCB, showAffiliation, showGrantCoordinationCB) { 263 264 this.conferenceId = confId; 264 265 this.methods = methods; … … 275 276 this.showGrantManagementCB = showGrantManagementCB; 276 277 this.showAffiliation = showAffiliation; 278 this.showGrantCoordinationCB = showGrantCoordinationCB; 277 279 var self = this; 278 280 if (userListParams) { -
indico/htdocs/js/indico/Management/Participants.js
rcb55f2 raf424d9 48 48 newUserPopup.close(); 49 49 } 50 }, false, false, false );50 }, false, false, false, false); 51 51 newUserPopup.open(); 52 52 }, -
indico/htdocs/js/indico/Management/Sessions.js
r10a79e raf424d9 1 1 /* 2 2 * Manager for the modification control list of users/groups in session management 3 *4 3 */ 5 4 type("SessionControlManager", ["ModificationControlManager"], { … … 155 154 } 156 155 ); 156 157 158 /* 159 * Manager for the list of conveners in session management 160 */ 161 type("SessionConvenerManager", ["ListOfUsersManager"], { 162 163 _getAddExistingParams: function(userList) { 164 var params = {confId: this.confId, sessionId: this.sessionId, userList: userList}; 165 return params; 166 }, 167 168 _getAddNewParams: function(userData) { 169 var params = {confId: this.confId, sessionId: this.sessionId, userData: userData}; 170 return params; 171 }, 172 173 _getEditParams: function(userData) { 174 var params = {confId: this.confId, sessionId: this.sessionId, userData: userData, userId: userData.get('id')}; 175 return params; 176 }, 177 178 _getUserParams: function(userId) { 179 var params = {confId: this.confId, sessionId: this.sessionId, userId: userId}; 180 return params; 181 }, 182 183 _getModifyUserRightsParams: function(userId, kindOfRights) { 184 var params = {confId: this.confId, sessionId: this.sessionId, userId: userId, kindOfRights: kindOfRights}; 185 return params; 186 }, 187 188 _getRolesText: function(user) { 189 var text = '('; 190 var counter = 0; 191 if (user['isManager']) { 192 text += $T('Session manager'); 193 counter += 1; 194 } 195 if (user['isCoordinator']) { 196 if (counter > 0) 197 text += $T(', Session coordinator'); 198 else 199 text += $T('Session coordinator'); 200 counter += 1; 201 } 202 if (counter == 0) 203 return null; 204 else 205 return Html.small({style:{paddingLeft:'5px'}}, text + ')'); 206 }, 207 208 _updateUserList: function(result) { 209 var self = this; 210 // update the user list 211 this.inPlaceListElem.set(''); 212 for (var i=0; i<result.length; i++) { 213 var userRowElements = []; 214 215 var userText = Html.span({className:'nameLink', cssFloat:'left'}, result[i]['fullName'], this._getRolesText(result[i])); 216 217 userRowElements.push(userText); 218 219 // Options menu for each user 220 var optionsMenuSpan = Html.span({onmouseover:"this.className = 'mouseover'", 221 onmouseout:"this.className = ''", style:{cssFloat:'right'}}); 222 223 var optionsMenuLink = Html.a({id:'userMenu_' + result[i]['id'], className:'dropDownMenu fakeLink', 224 style:{marginLeft:'15px', marginRight:'15px'}}, $T('More')); 225 this._addParticipantMenu(optionsMenuLink, result[i]); 226 optionsMenuSpan.append(optionsMenuLink); 227 userRowElements.push(optionsMenuSpan); 228 229 // edit icon 230 var imageEdit = Html.img({ 231 src: imageSrc("edit"), 232 alt: $T('Edit ') + this.userCaption, 233 title: $T('Edit this ') + this.userCaption, 234 className: 'UIRowButton2', 235 id: 'edit_'+result[i]['id'], 236 style:{cssFloat:'right', cursor:'pointer'} 237 }); 238 239 imageEdit.observeClick(function(event) { 240 if (event.target) { // Firefox 241 var userId = event.target.id.split('_')[1]; 242 } else { // IE 243 var userId = event.srcElement.id.split('_')[1]; 244 } 245 self._getUserData(self.methods["getUserData"], self._getUserParams(userId)); 246 }); 247 userRowElements.push(imageEdit); 248 249 // remove icon 250 var imageRemove = Html.img({ 251 src: imageSrc("remove"), 252 alt: $T('Remove ') + this.userCaption, 253 title: $T('Remove this ') + this.userCaption + $T(' from the list'), 254 className: 'UIRowButton2', 255 id: 'remove_'+result[i]['id'], 256 style:{marginRight:'15px', cssFloat:'right', cursor:'pointer'} 257 }); 258 259 imageRemove.observeClick(function(event) { 260 if (event.target) { // Firefox 261 var userId = event.target.id.split('_')[1]; 262 } else { // IE 263 var userId = event.srcElement.id.split('_')[1]; 264 } 265 self._manageUserList(self.methods["remove"], self._getUserParams(userId), false); 266 }); 267 userRowElements.push(imageRemove); 268 269 var row = Html.li({className: this.elementClass, onmouseover: "this.style.backgroundColor = '#ECECEC';", 270 onmouseout : "this.style.backgroundColor='#ffffff';", style:{cursor:'auto'}}); 271 272 for (var j=userRowElements.length-1; j>=0; j--) { // Done the 'for' like this because of IE7 273 row.append(userRowElements[j]); 274 } 275 276 this.inPlaceListElem.append(row); 277 } 278 }, 279 280 _showEditUserPopup: function(userData) { 281 var self = this; 282 // get the user data 283 var user = $O(userData); 284 var editUserPopup = new UserDataPopup( 285 $T('Edit ') + self.userCaption + $T(' data'), 286 user, 287 function(newData) { 288 if (editUserPopup.parameterManager.check()) { 289 self._manageUserList(self.methods["edit"], self._getEditParams(newData)); 290 editUserPopup.close(); 291 } 292 }, false, !userData['isManager'], !userData['isCoordinator'], true); 293 editUserPopup.open(); 294 }, 295 296 addManagementMenu: function(){ 297 var self = this; 298 this.inPlaceMenu.observeClick(function(e) { 299 var menuItems = {}; 300 301 menuItems[$T('Add existing')] = function(){ self._addExistingUser($T("Add ") + self.userCaption, true, this.confId, false, 302 true, true, false, true); }; 303 menuItems[$T('Add new')] = function(){ self._addNonExistingUser(); }; 304 305 var menu = new PopupMenu(menuItems, [self.inPlaceMenu], "popupList"); 306 var pos = self.inPlaceMenu.getAbsolutePosition(); 307 menu.open(pos.x, pos.y + 20); 308 return false; 309 }); 310 }, 311 312 _addParticipantMenu: function(element, user) { 313 var self = this; 314 315 element.observeClick(function(e) { 316 var menuItems = {}; 317 318 if (!user['isManager']) { 319 menuItems[$T('Give management rights')] = function() { 320 self._manageUserList(self.methods["grantRights"], self._getModifyUserRightsParams(user['id'], "management"), false); 321 menu.close(); 322 }; 323 } else { 324 menuItems[$T('Remove management rights')] = function() { 325 self._manageUserList(self.methods["revokeRights"], self._getModifyUserRightsParams(user['id'], "management"), false); 326 menu.close(); 327 }; 328 } 329 330 if (!user['isCoordinator']) { 331 menuItems[$T('Give coordination rights')] = function() { 332 self._manageUserList(self.methods["grantRights"], self._getModifyUserRightsParams(user['id'], "coordination"), false); 333 menu.close(); 334 }; 335 } else { 336 menuItems[$T('Remove coordination rights')] = function() { 337 self._manageUserList(self.methods["revokeRights"], self._getModifyUserRightsParams(user['id'], "coordination"), false); 338 menu.close(); 339 }; 340 } 341 342 var menu = new PopupMenu(menuItems, [element], "popupList"); 343 var pos = element.getAbsolutePosition(); 344 menu.open(pos.x, pos.y + 20); 345 return false; 346 }); 347 } 348 349 }, 350 351 function(confId, sessionId, inPlaceListElem, inPlaceMenu, userCaption) { 352 var self = this; 353 this.confId = confId; 354 this.sessionId = sessionId; 355 this.methods = {'addNew': 'session.conveners.addNewConvener', 356 'addExisting': 'session.conveners.addExistingConvener', 357 'remove': 'session.conveners.removeConvener', 358 'edit': 'session.conveners.editConvenerData', 359 'getUserData': 'session.conveners.getConvenerData', 360 'getUserList': 'session.conveners.getConvenerList', 361 'grantRights': 'session.conveners.grantRights', 362 'revokeRights': 'session.conveners.revokeRights' 363 } 364 365 this.inPlaceMenu = inPlaceMenu; 366 367 368 // params: (confId, methods, userListParams, inPlaceListElem, showRemoveIcon, showEditIcon, showFavouritesIcon, showOrderArrows, 369 // kindOfUser, userCaption, elementClass, showGrantSubmissionCB, showGrantManagementCB, showAffiliation, showGrantCoordiantionCB) 370 this.ListOfUsersManager(confId, this.methods, {confId: confId, sessionId: this.sessionId}, inPlaceListElem, true, true, 371 false, false, null, userCaption, "UIPerson", false, true, false, true); 372 } 373 ); -
indico/htdocs/sessionCreation.py
rbdd862 raf424d9 38 38 p.createSession( args ) 39 39 return "done" 40 41 def convenerSearch( req, **params ):42 return conferenceModif.RHNewSessionConvenerSearch( req ).process( params )43 44 def convenerNew( req, **params ):45 return conferenceModif.RHNewSessionConvenerNew( req ).process( params )46 47 def personAdd( req, **params ):48 return conferenceModif.RHNewSessionPersonAdd( req ).process( params )49 -
indico/htdocs/sessionModification.py
rbdd862 raf424d9 31 31 return sessionModif.RHSessionDatesModification( req ).process( params ) 32 32 33 def convenerSearch( req, **params ):34 return sessionModif.RHSessionDataModificationConvenerSearch( req ).process( params )35 36 def convenerNew( req, **params ):37 return sessionModif.RHSessionDataModificationConvenerNew( req ).process( params )38 39 def personAdd( req, **params ):40 return sessionModif.RHSessionDataModificationPersonAdd( req ).process( params )41 42 def newConvenerSearch( req, **params ):43 return sessionModif.RHSessionDataModificationNewConvenerSearch( req ).process( params )44 45 def newConvenerCreate( req, **params ):46 return sessionModif.RHSessionDataModificationNewConvenerCreate( req ).process( params )47 48 def convenerAdd( req, **params ):49 return sessionModif.RHSessionDataModificationConvenerAdd( req ).process( params )50 51 33 def close( req, **params ): 52 34 return sessionModif.RHSessionClose( req ).process( params ) … … 55 37 return sessionModif.RHSessionOpen( req ).process( params ) 56 38 57 def newConvener(req,**params):58 return sessionModif.RHConvenerNew( req ).process( params)59 60 def remConveners(req, **args):61 return sessionModif.RHConvenersRem( req ).process( args )62 63 def editConvener(req,**params):64 return sessionModif.RHConvenerEdit( req ).process( params)65 66 39 def addMaterial( req, **params ): 67 40 return sessionModif.RHSessionAddMaterial( req ).process( params ) 68 41 69 42 def performAddMaterial( req, **params ): 70 43 return sessionModif.RHSessionPerformAddMaterial( req ).process( params ) 71 44 72 45 def removeMaterials( req, **params ): 73 46 return sessionModif.RHSessionRemoveMaterials( req ).process( params )
Note: See TracChangeset
for help on using the changeset viewer.
