Exemple #1
0
    def __init__(self, context, request):
        super(MobappBaseView, self).__init__(context, request)

        self.cirequest = utils.CaseInsensitiveDict()
        for key, value in request.form.iteritems():
            self.cirequest[key] = value

        #although this should ALWAYS be called in subsite context...
        self.subsite = context.getSubsite()
        self.SiteID = self.cirequest.get('SiteID', 0)  #Ignored.

        self.ZoneID = self.cirequest.get("ZoneID", "")
        self.ZoneIDs = self.ZoneID.split("|")
        if self.ZoneIDs == [""]:
            self.ZoneIDs = []

        self.Zone = self.cirequest.get("Zone", "")
        self.Zones = self.Zone.split("|")
        if self.Zones == [""]:
            self.Zones = []

        self.DayCount = int(self.cirequest.get("DayCount", self.DefaultDays))
        self.Count = int(self.cirequest.get("Count", 30))
        if self.Count > self.MaxArticles:
            self.Count = self.MaxArticles

        self.ArticleID = self.cirequest.get("ArticleId", None)
        self.AuthorID = self.cirequest.get("AuthorId", None)
        self.Title = utils.toBool(self.cirequest.get("Title", True))
        self.TitleAsCDATA = utils.toBool(
            self.cirequest.get("TitleAsCDATA", False))
        self.Intro = utils.toBool(self.cirequest.get("Introduction", True))
        self.IntroAsCDATA = utils.toBool(
            self.cirequest.get('IntroductionAsCDATA', False))
        self.Content = utils.toBool(self.cirequest.get("Content", True))
        self.ContentAsCDATA = utils.toBool(
            self.cirequest.get("ContentAsCDATA", False))
        self.Image = utils.toBool(self.cirequest.get("Image", True))
        self.ImageTitle = utils.toBool(self.cirequest.get("ImageTitle", True))
        self.Authors = utils.toBool(self.cirequest.get("Authors", True))
        self.AuthorsFullName = utils.toBool(
            self.cirequest.get("AuthorsFullName", False))
        self.html = utils.toBool(self.cirequest.get("html", False))

        if self.html:
            self.ContentAsCDATA = True
            self.TitleAsCDATA = True

        self.catalog = getToolByName(self.context, 'portal_catalog')

        if self.Zones:
            #we got some Section names we have to look up ID's for
            for sectionName in self.Zones:
                ### IS there a way to get an exact match??????
                brains = self.catalog.searchResults(portal_type="Section",
                                                    Title=sectionName)
                uid = brains[0].UID  #first element by default
                for brain in brains:
                    if brain.Title.upper() == sectionName.upper():
                        uid = brain.UID
                        break

                self.ZoneIDs.append(uid)

        self.Article = Types.ArticleFactory(
            lookupObj_func=self.subsite.reference_catalog.lookupObject,
            request=self.request)

        #set the timezone
        tzOffset = getattr(self.context, 'getTimezoneOffset', lambda: 0)()

        #we assume US/Eastern when we don't have a timezone offset set.
        #XXX we shouldn't set numeric offsets, we should set tzinfo objects to support DST
        if tzOffset == 0 or tzOffset is None:
            self.subsiteTz = pytz.timezone('US/Eastern')
        else:
            #convert to minutes
            offset = int(tzOffset * 60)
            self.subsiteTz = pytz.FixedOffset(offset)