Beispiel #1
0
 def _process(self):
     if not User.has_rows():
         self._redirect(url_for('bootstrap.index'))
     else:
         wfReg = webFactoryRegistry.WebFactoryRegistry()
         p = welcome.WPWelcome(self, self._target, wfReg)
         return p.display()
Beispiel #2
0
 def _checkParams(self, params, mustExist=1):
     RHCategoryDisplay._checkParams(self, params, mustExist)
     #if self._target.getSubCategoryList():
     #    raise MaKaCError( _("Cannot add conferences to a category which already contains some sub-categories"))
     self._wf = None
     self._wfReg = webFactoryRegistry.WebFactoryRegistry()
     et = params.get("event_type", "").strip()
     if et != "" and et != "default":
         self._wf = self._wfReg.getFactoryById(et)
Beispiel #3
0
 def _getLoginURL(self, return_url=None):
     url = return_url or self.getRequestURL()
     if url == "":
         url = urlHandlers.UHConferenceDisplay.getURL(self._conf)
     wr = webFactoryRegistry.WebFactoryRegistry()
     self._wf = wr.getFactory(self._conf)
     if self._wf is not None or self._conf is None:
         return urlHandlers.UHSignIn.getURL(url)
     else:
         return urlHandlers.UHConfSignIn.getURL(self._target, url)
Beispiel #4
0
 def _checkParams(self, params, mustExist=1):
     RHCategoryDisplay._checkParams(self, params, mustExist)
     #if self._target.getSubCategoryList():
     #    raise MaKaCError( _("Cannot add conferences to a category which already contains some sub-categories"))
     self._wf = None
     self._wfReg = webFactoryRegistry.WebFactoryRegistry()
     self._event_type = params.get("event_type", "").strip()
     if self._event_type == 'lecture':
         self._event_type = 'simple_event'
     if self._event_type and self._event_type != 'default':
         self._wf = self._wfReg.getFactoryById(self._event_type)
Beispiel #5
0
 def _process(self):
     if self._statusValue != "OK":
         return self._createResponse(self._statusValue, self._message)
     RHCreateEventBase._process(self)
     if self._statusValue != "OK":
         return self._createResponse(self._statusValue, self._message)
     wr = webFactoryRegistry.WebFactoryRegistry()
     fact = wr.getFactoryById('simple_event')
     wr.registerFactory(self._event, fact)
     return self._createResponse("OK",
                                 "Lecture %s added" % self._event.getId())
Beispiel #6
0
 def _handleSet(self):
     curType = self._target.getType()
     newType = self._value
     if newType != "" and newType != curType:
         import MaKaC.webinterface.webFactoryRegistry as webFactoryRegistry
         wr = webFactoryRegistry.WebFactoryRegistry()
         factory = wr.getFactoryById(newType)
         wr.registerFactory(self._target, factory)
         # revert to the default theme for the event type
         layout_settings.delete(self._conf, 'timetable_theme')
         signals.event.data_changed.send(self._target,
                                         attr=None,
                                         old=None,
                                         new=None)
Beispiel #7
0
    def _handleSet(self):
        curType = self._target.getType()
        newType = self._value
        if newType != "" and newType != curType:
            import MaKaC.webinterface.webFactoryRegistry as webFactoryRegistry
            wr = webFactoryRegistry.WebFactoryRegistry()
            factory = wr.getFactoryById(newType)
            wr.registerFactory(self._target, factory)

            styleMgr = info.HelperMaKaCInfo.getMaKaCInfoInstance(
            ).getStyleManager()

            dispMgr = displayMgr.ConfDisplayMgrRegistery().getDisplayMgr(
                self._target)
            dispMgr.setDefaultStyle(
                styleMgr.getDefaultStylesheetForEventType(newType))
Beispiel #8
0
def setType(style, id):
    if style == 'nicecompact':
        type = ''
    elif style == 'standard' or style == 'tools/printable' or style == 'seminars' or style == 'nosession' or style == 'administrative' or style == 'standard2' or style == 'minutes':  #chooses the 'type' based on 'style' of AGENDA
        type = 'meeting'
    elif style == 'event' or style == 'week' or style == 'lecture':
        type = 'simple_event'
    else:  #if stylesheet in AGENDA db is blank
        type = 'meeting'
    if type != '':
        #this if statement is in because if type is equal to nicecompact or lecture then currently no factory is used
        #when a factory type is created to go with these, remove the if statement and unindent the code.
        #instantiate the registry
        wr = webFactoryRegistry.WebFactoryRegistry()
        ch = conference.ConferenceHolder()
        #fetch the conference which type is to be updated
        c = ch.getById(id)
        #get the web factory. Possible values: simple_event, meeting
        fact = wr.getFactoryById(type)
        #register the factory for the conference
        wr.registerFactory(c, fact)
Beispiel #9
0
 def getWebFactory(self):
     if self._wf == "":
         wr = webFactoryRegistry.WebFactoryRegistry()
         self._wf = wr.getFactory(self._conf)
     return self._wf
Beispiel #10
0
 def getWebFactory(self):
     wr = webFactoryRegistry.WebFactoryRegistry()
     self._wf = wr.getFactory(self._target.getConference())
     return self._wf
Beispiel #11
0
 def _process(self):
     wfReg = webFactoryRegistry.WebFactoryRegistry()
     stats = statistics.CategoryStatistics(self._target).getStatistics()
     p = category.WPCategoryStatistics(self, self._target, wfReg, stats)
     return p.display()
Beispiel #12
0
    def _process(self):

        wfReg = webFactoryRegistry.WebFactoryRegistry()
        p = category.WPCategoryDisplay(self, self._target, wfReg)
        return p.display()
Beispiel #13
0
        if (emailstr != "") and not validMail(emailstr):
            raise FormValuesError(
                "One of the emails specified or one of the separators is invalid"
            )

        c.getSupportInfo().setEmail(emailstr)
        c.getSupportInfo().setCaption(confData.get("supportCaption",
                                                   "Support"))
        displayMgr.ConfDisplayMgrRegistery().getDisplayMgr(c).setDefaultStyle(
            confData.get("defaultStyle", ""))
        if c.getVisibility() != confData.get("visibility", 999):
            c.setVisibility(confData.get("visibility", 999))
        curType = c.getType()
        newType = confData.get("eventType", "")
        if newType != "" and newType != curType:
            wr = webFactoryRegistry.WebFactoryRegistry()
            factory = wr.getFactoryById(newType)
            wr.registerFactory(c, factory)
            dispMgr = displayMgr.ConfDisplayMgrRegistery().getDisplayMgr(c)
            styleMgr = info.HelperMaKaCInfo.getMaKaCInfoInstance(
            ).getStyleManager()
            dispMgr.setDefaultStyle(
                styleMgr.getDefaultStyleForEventType(newType))

    @staticmethod
    def validateShortURL(tag, target):
        if tag.isdigit():
            raise ValueError(
                _("Short URL tag is a number: '%s'. Please add at least one non-digit."
                  ) % tag)
        if not re.match(r'^[a-zA-Z0-9/._-]+$', tag) or '//' in tag:
Beispiel #14
0
 def _process( self ):
     wfReg = webFactoryRegistry.WebFactoryRegistry()
     p = welcome.WPWelcome( self, self._target, wfReg )
     return p.display()
Beispiel #15
0
    def getVars(self):
        vars = wcomponents.WTemplated.getVars(self)
        defaultDefinePlace = defaultDefineRoom = ""
        defaultInheritPlace = defaultInheritRoom = "checked"
        locationName, locationAddress, roomName, defaultExistRoom = "", "", "", ""

        vars["conference"] = self._conf
        vars["boardNumber"] = quoteattr(str(self._contrib.getBoardNumber()))
        vars["contrib"] = self._contrib
        vars["title"] = quoteattr(self._contrib.getTitle())
        vars["description"] = self.htmlText(self._contrib.getDescription())
        vars["additionalFields"] = self._contrib.getConference(
        ).getAbstractMgr().getAbstractFieldsMgr().getFields()
        vars["fieldDict"] = self._getAdditionalFieldsData()
        vars["day"] = ""
        vars["month"] = ""
        vars["year"] = ""
        vars["sHour"] = ""
        vars["sMinute"] = ""
        sDate = self._contrib.getStartDate()
        if sDate is not None:
            vars["day"] = quoteattr(str(sDate.day))
            vars["month"] = quoteattr(str(sDate.month))
            vars["year"] = quoteattr(str(sDate.year))
            vars["sHour"] = quoteattr(str(sDate.hour))
            vars["sMinute"] = quoteattr(str(sDate.minute))
        if self._contrib.getStartDate():
            vars["dateTime"] = format_datetime(
                self._contrib.getAdjustedStartDate(),
                'd/M/yyyy H:mm',
                keep_tz=True)
        else:
            vars["dateTime"] = ""
        vars["duration"] = self._contrib.getDuration().seconds / 60
        if self._contrib.getDuration() is not None:
            vars["durationHours"] = quoteattr(
                str((datetime(1900, 1, 1) + self._contrib.getDuration()).hour))
            vars["durationMinutes"] = quoteattr(
                str((datetime(1900, 1, 1) +
                     self._contrib.getDuration()).minute))
        if self._contrib.getOwnLocation():
            defaultDefinePlace = "checked"
            defaultInheritPlace = ""
            locationName = self._contrib.getLocation().getName()
            locationAddress = self._contrib.getLocation().getAddress()

        if self._contrib.getOwnRoom():
            defaultDefineRoom = "checked"
            defaultInheritRoom = ""
            defaultExistRoom = ""
            roomName = self._contrib.getRoom().getName()
        vars["defaultInheritPlace"] = defaultInheritPlace
        vars["defaultDefinePlace"] = defaultDefinePlace
        vars["confPlace"] = ""
        confLocation = self._owner.getLocation()
        if self._contrib.isScheduled():
            confLocation = self._contrib.getSchEntry().getSchedule().getOwner(
            ).getLocation()
        if self._contrib.getSession(
        ) and not self._contrib.getConference().getEnableSessionSlots():
            confLocation = self._contrib.getSession().getLocation()
        if confLocation:
            vars["confPlace"] = confLocation.getName()
        vars["locationName"] = locationName
        vars["locationAddress"] = locationAddress
        vars["defaultInheritRoom"] = defaultInheritRoom
        vars["defaultDefineRoom"] = defaultDefineRoom
        vars["defaultExistRoom"] = defaultExistRoom
        vars["confRoom"] = ""
        confRoom = self._owner.getRoom()
        rx = []
        roomsexist = self._conf.getRoomList()
        roomsexist.sort()
        for room in roomsexist:
            sel = ""
            rx.append("""<option value=%s%s>%s</option>""" %
                      (quoteattr(str(room)), sel, self.htmlText(room)))
        vars["roomsexist"] = "".join(rx)
        if self._contrib.isScheduled():
            confRoom = self._contrib.getSchEntry().getSchedule().getOwner(
            ).getRoom()
        if self._contrib.getSession(
        ) and not self._contrib.getConference().getEnableSessionSlots():
            confRoom = self._contrib.getSession().getRoom()
        if confRoom:
            vars["confRoom"] = confRoom.getName()
        vars["roomName"] = quoteattr(roomName)
        vars["parentType"] = "conference"
        if self._contrib.getSession() is not None:
            vars["parentType"] = "session"
            if self._contrib.isScheduled() and self._contrib.getConference(
            ).getEnableSessionSlots():
                vars["parentType"] = "session slot"
        vars["postURL"] = urlHandlers.UHContributionDataModif.getURL(
            self._contrib)
        vars["types"] = self._getTypeItemsHTML()
        vars["keywords"] = self._contrib.getKeywords()
        import MaKaC.webinterface.webFactoryRegistry as webFactoryRegistry
        wr = webFactoryRegistry.WebFactoryRegistry()
        wf = wr.getFactory(self._conf)
        if wf is not None:
            type = wf.getId()
        else:
            type = "conference"
        if type == "conference":
            vars["Type"] = WContributionDataModificationType().getHTML(vars)
            vars["Board"] = WContributionDataModificationBoard().getHTML(vars)
        else:
            vars["Type"] = ""
            vars["Board"] = ""

        vars["useRoomBookingModule"] = Config.getInstance(
        ).getIsRoomBookingActive()
        if self._contrib.getSession():
            vars["sessionType"] = self._contrib.getSession().getScheduleType()
        else:
            vars["sessionType"] = 'none'
        return vars
Beispiel #16
0
class UtilsConference:
    @staticmethod
    def get_start_dt(params):
        tz = params['Timezone']
        try:
            return timezone(tz).localize(
                datetime(int(params['sYear']), int(params['sMonth']),
                         int(params['sDay']), int(params['sHour']),
                         int(params['sMinute'])))
        except ValueError as e:
            raise FormValuesError(
                'The start date you have entered is not correct: {}'.format(e),
                'Event')

    @staticmethod
    def get_end_dt(params, start_dt):
        tz = params['Timezone']
        if params.get('duration'):
            end_dt = start_dt + timedelta(minutes=params['duration'])
        else:
            try:
                end_dt = timezone(tz).localize(
                    datetime(int(params['eYear']), int(params['eMonth']),
                             int(params['eDay']), int(params['eHour']),
                             int(params['eMinute'])))
            except ValueError as e:
                raise FormValuesError(
                    'The end date you have entered is not correct: {}'.format(
                        e), 'Event')
        return end_dt

    @staticmethod
    def get_location_data(params):
        location_data = json.loads(params['location_data'])
        if location_data.get('room_id'):
            location_data['room'] = Room.get_one(location_data['room_id'])
        if location_data.get('venue_id'):
            location_data['venue'] = Location.get_one(
                location_data['venue_id'])
        return location_data

    @classmethod
    def get_new_conference_kwargs(cls, params):
        start_dt = cls.get_start_dt(params)
        end_dt = cls.get_end_dt(params, start_dt)
        return {
            'title': params['title'],
            'timezone': unicode(params['Timezone']),
            'start_dt': start_dt,
            'end_dt': end_dt
        }

    @classmethod
    def setValues(cls, c, confData, notify=False):
        c.setTitle(confData["title"])
        c.setDescription(confData["description"])
        c.setOrgText(confData.get("orgText", ""))
        c.setComments(confData.get("comments", ""))
        c.setKeywords(confData["keywords"])
        c.setChairmanText(confData.get("chairText", ""))
        if "shortURLTag" in confData.keys():
            tag = confData["shortURLTag"].strip()
            if tag:
                try:
                    UtilsConference.validateShortURL(tag, c)
                except ValueError, e:
                    raise FormValuesError(e.message)
            if c.getUrlTag() != tag:
                mapper = ShortURLMapper()
                mapper.remove(c)
                c.setUrlTag(tag)
                if tag:
                    mapper.add(tag, c)
        c.setContactInfo(confData.get("contactInfo", ""))
        #################################
        # Fermi timezone awareness      #
        #################################
        c.setTimezone(confData["Timezone"])
        sDate = cls.get_start_dt(confData)
        eDate = cls.get_end_dt(confData, sDate)
        moveEntries = int(confData.get("move", 0))
        with track_time_changes():
            c.setDates(sDate.astimezone(timezone('UTC')),
                       eDate.astimezone(timezone('UTC')),
                       moveEntries=moveEntries)

        #################################
        # Fermi timezone awareness(end) #
        #################################

        old_location_data = c.as_event.location_data
        location_data = cls.get_location_data(confData)
        update_event(c.as_event, {'location_data': location_data})

        if old_location_data != location_data:
            signals.event.data_changed.send(c,
                                            attr='location',
                                            old=old_location_data,
                                            new=location_data)

        emailstr = setValidEmailSeparators(confData.get("supportEmail", ""))

        if (emailstr != "") and not validMail(emailstr):
            raise FormValuesError(
                "One of the emails specified or one of the separators is invalid"
            )

        c.getSupportInfo().setEmail(emailstr)
        c.getSupportInfo().setCaption(confData.get("supportCaption",
                                                   "Support"))
        if c.getVisibility() != confData.get("visibility", 999):
            c.setVisibility(confData.get("visibility", 999))
        theme = confData.get('defaultStyle', '')
        curType = c.getType()
        newType = confData.get('eventType', '')
        if newType != "" and newType != curType:
            wr = webFactoryRegistry.WebFactoryRegistry()
            factory = wr.getFactoryById(newType)
            wr.registerFactory(c, factory)
            # type changed. always revert to the default theme
            layout_settings.delete(c, 'timetable_theme')
        elif not theme or theme == theme_settings.defaults.get(newType):
            # if it's the default theme or nothing was set (does this ever happen?!), we don't store it
            layout_settings.delete(c, 'timetable_theme')
        else:
            # set the new theme
            layout_settings.set(c, 'timetable_theme', theme)