예제 #1
0
class Model(Template):
    def doinit(self):
        self.tabactive = self.form.tabStatus.data
        self.isActivePage = 'active'
        self.isActiveContent = ''
        if self.tabactive == 'content':
            self.isActivePage, self.isActiveContent = self.isActiveContent, self.isActivePage
        self.markup = self.form.markup.data and (self.tabactive == 'content')

        self.text = None
        self.title = self.form.title.data
        self.content = self.form.content.data

    def dovalidate(self):
        self.site = pywikibot.Site()

        if self.tabactive == 'page':
            if self.title:
                self.page = pywikibot.Page(self.site, self.title)
                path = self.exists(self.page)

                if path is None:
                    self.error('title', msg['contribtracker-page-not-found'])
                elif path:
                    self.page = path[-1]
            else:
                self.error('title', msg['validator-require'])
        else:
            if not self.content:
                self.error('content', msg['validator-require'])

    def dorender(self):
        if self.tabactive == 'page':
            self.content = self.page.get()
        self.textEngine = TextEngine(markup=self.markup)
        self.text = self.textEngine.remove(self.content)
        self.length, self.swath = self.textEngine.length(self.text)
        self.text = self.textEngine.convert(self.text)
예제 #2
0
파일: model.py 프로젝트: nullzero/wpcgi
class Model(Template):
    def doinit(self):
        self.tabactive = self.form.tabStatus.data
        self.isActivePage = 'active'
        self.isActiveContent = ''
        if self.tabactive == 'content':
            self.isActivePage, self.isActiveContent = self.isActiveContent, self.isActivePage
        self.markup = self.form.markup.data and (self.tabactive == 'content')

        self.text = None
        self.title = self.form.title.data
        self.content = self.form.content.data

    def dovalidate(self):
        self.site = pywikibot.Site()

        if self.tabactive == 'page':
            if self.title:
                self.page = pywikibot.Page(self.site, self.title)
                path = self.exists(self.page)

                if path is None:
                    self.error('title', msg['contribtracker-page-not-found'])
                elif path:
                    self.page = path[-1]
            else:
                self.error('title', msg['validator-require'])
        else:
            if not self.content:
                self.error('content', msg['validator-require'])

    def dorender(self):
        if self.tabactive == 'page':
            self.content = self.page.get()
        self.textEngine = TextEngine(markup=self.markup)
        self.text = self.textEngine.remove(self.content)
        self.length, self.swath = self.textEngine.length(self.text)
        self.text = self.textEngine.convert(self.text)
예제 #3
0
class Model(Template):
    def doinit(self):
        self.failed = False
        self.results = []

        self.title = self.form.title.data
        self.oldid = self.form.oldid.data
        self.minlen = int(self.form.minlen.data or 2000)
        self.ratio = float(self.form.ratio.data or 2.0)
        self.maxday = int(self.form.maxday.data or 14)

    def dovalidate(self):
        self.site = pywikibot.Site('th')
        self.page = pywikibot.Page(self.site, self.title)

        path = self.exists(self.page)
        if path is None:
            self.error('title', msg['dykchecker-page-not-found'])
        elif path:
            self.page = path[-1]

        if self.oldid:
            try:
                self.oldid = self.site.loadrevid(self.oldid)
            except:
                self.error('oldid', msg['dykchecker-oldid-not-found'])

    def dorender(self):
        self.textEngine = TextEngine()
        self.text = self.page.get()

        self.check_info()
        self.check_ref()
        self.check_length()
        self.check_old()

        result = AttrObject(cl=self.evaluate(not self.failed),
                            text=msg['dykchecker-summary'],
                            desc='')

        if self.failed:
            result.value = msg['dykchecker-summary-fail']
        else:
            result.value = msg['dykchecker-summary-pass']

        self.results.insert(0, result)

        self.results = enumerate(self.results)

    def evaluate(self, val):
        if val:
            return "passed"
        else:
            self.failed = True
            return "failed"

    def neutral(self):
        return "normal"

    def check_info(self):
        self.results.append(
            AttrObject(
                cl=self.neutral(),
                value=msg['dykchecker-revision-info-value'].format(
                    self.page.latestRevision(), self.page.title(),
                    self.page.userName(), self.page.editTime()),
                text=msg["dykchecker-revision-info"],
                desc="",
            ))

    def check_ref(self):
        allrefs = self.text.count("<ref")
        self.results.append(
            AttrObject(cl=self.evaluate(allrefs > 0),
                       value=msg['dykchecker-inlineref-value'].format(allrefs),
                       text=msg["dykchecker-inlineref"],
                       desc=msg["dykchecker-inlineref-desc"]))

    def check_length(self):
        self.text = self.textEngine.remove(self.text)
        self.length, self.swath = self.textEngine.length(self.text)
        self.results.append(
            AttrObject(
                cl=self.evaluate(self.length > self.minlen),
                value=msg['dykchecker-length-value'].format(self.length),
                text=msg["dykchecker-length"],
                desc=msg["dykchecker-length-desc"].format(self.minlen),
            ))
        self.text = self.textEngine.convert(self.text)

    def check_old(self):
        now = self.site.getcurrenttime()
        oldestRev = None
        newArt = False
        if self.oldid:
            oldestRev = self.oldid
        else:
            for revision in self.page.getVersionHistory():
                if (now - revision[1]).days > self.maxday:
                    break
                oldestRev = revision
            else:
                createRev = oldestRev
                newArt = True

            if not newArt:
                createRev = self.page.getVersionHistory(reverseOrder=True,
                                                        total=1)[0]

            if newArt:
                article_creation_desc = msg[
                    "dykchecker-creation-new-desc"].format(self.maxday)
                article_creation_eval = self.evaluate(True)
            else:
                article_creation_desc = msg["dykchecker-creation-desc"]
                article_creation_eval = self.neutral()

            self.results.append(
                AttrObject(text=msg["dykchecker-creation"],
                           desc=msg[article_creation_desc],
                           cl=article_creation_eval,
                           value=msg['dykchecker-creation-value'].format(
                               createRev[0], createRev[1], createRev[2],
                               (now - createRev[1]).days)))

            if newArt:
                return

        result = AttrObject(text=msg["dykchecker-old-revision"],
                            desc=msg["dykchecker-old-revision-desc"].format(
                                self.ratio, self.maxday))

        if oldestRev is None:
            result.cl = self.evaluate(False)
            result.value = msg['dykchecker-old-revision-not-exist'].format(
                self.maxday)
        else:
            if self.oldid:
                text = oldestRev[3]
            else:
                text = self.page.getOldVersion(oldestRev[0], get_redirect=True)
            text = self.textEngine.remove(text)
            length = self.textEngine.length(text)[0]
            ratio = float(self.length) / float(length)
            result.cl = self.evaluate(ratio >= (self.ratio + 1))
            result.value = msg['dykchecker-old-revision-value'].format(
                oldestRev[0], oldestRev[1], (now - oldestRev[1]).days, length,
                ratio - 1.0)
        self.results.append(result)
예제 #4
0
파일: model.py 프로젝트: nullzero/wpcgi
class Model(Template):
    def doinit(self):
        self.failed = False
        self.results = []

        self.title = self.form.title.data
        self.oldid = self.form.oldid.data
        self.minlen = int(self.form.minlen.data or 2000)
        self.ratio = float(self.form.ratio.data or 2.0)
        self.maxday = int(self.form.maxday.data or 14)

    def dovalidate(self):
        self.site = pywikibot.Site('th')
        self.page = pywikibot.Page(self.site, self.title)

        path = self.exists(self.page)
        if path is None:
            self.error('title', msg['dykchecker-page-not-found'])
        elif path:
            self.page = path[-1]

        if self.oldid:
            try:
                self.oldid = self.site.loadrevid(self.oldid)
            except:
                self.error('oldid', msg['dykchecker-oldid-not-found'])

    def dorender(self):
        self.textEngine = TextEngine()
        self.text = self.page.get()

        self.check_info()
        self.check_ref()
        self.check_length()
        self.check_old()

        result = AttrObject(cl=self.evaluate(not self.failed),
                            text=msg['dykchecker-summary'],
                            desc='')

        if self.failed:
            result.value = msg['dykchecker-summary-fail']
        else:
            result.value = msg['dykchecker-summary-pass']

        self.results.insert(0, result)

        self.results = enumerate(self.results)

    def evaluate(self, val):
        if val:
            return "passed"
        else:
            self.failed = True
            return "failed"

    def neutral(self):
        return "normal"

    def check_info(self):
        self.results.append(
            AttrObject(cl=self.neutral(),
                       value=msg['dykchecker-revision-info-value'].format(
                           self.page.latestRevision(),
                           self.page.title(),
                           self.page.userName(),
                           self.page.editTime()
                       ),
                       text=msg["dykchecker-revision-info"],
                       desc="",
            )
        )

    def check_ref(self):
        allrefs = self.text.count("<ref")
        self.results.append(
            AttrObject(cl=self.evaluate(allrefs > 0),
                       value=msg['dykchecker-inlineref-value'].format(allrefs),
                       text=msg["dykchecker-inlineref"],
                       desc=msg["dykchecker-inlineref-desc"]
            )
        )

    def check_length(self):
        self.text = self.textEngine.remove(self.text)
        self.length, self.swath = self.textEngine.length(self.text)
        self.results.append(
            AttrObject(cl=self.evaluate(self.length > self.minlen),
                       value=msg['dykchecker-length-value'].format(self.length),
                       text=msg["dykchecker-length"],
                       desc=msg["dykchecker-length-desc"].format(self.minlen),
            )
        )
        self.text = self.textEngine.convert(self.text)

    def check_old(self):
        now = self.site.getcurrenttime()
        oldestRev = None
        newArt = False
        if self.oldid:
            oldestRev = self.oldid
        else:
            for revision in self.page.getVersionHistory():
                if (now - revision[1]).days > self.maxday:
                    break
                oldestRev = revision
            else:
                createRev = oldestRev
                newArt = True

            if not newArt:
                createRev = self.page.getVersionHistory(reverseOrder=True, total=1)[0]

            if newArt:
                article_creation_desc = msg["dykchecker-creation-new-desc"].format(self.maxday)
                article_creation_eval = self.evaluate(True)
            else:
                article_creation_desc = msg["dykchecker-creation-desc"]
                article_creation_eval = self.neutral()

            self.results.append(
                AttrObject(text=msg["dykchecker-creation"],
                           desc=msg[article_creation_desc],
                           cl=article_creation_eval,
                           value=msg['dykchecker-creation-value'].format(
                               createRev[0], createRev[1], createRev[2], (now - createRev[1]).days
                           )
                )
            )

            if newArt:
                return

        result = AttrObject(text=msg["dykchecker-old-revision"],
                            desc=msg["dykchecker-old-revision-desc"].format(self.ratio, self.maxday))

        if oldestRev is None:
            result.cl = self.evaluate(False)
            result.value = msg['dykchecker-old-revision-not-exist'].format(self.maxday)
        else:
            if self.oldid:
                text = oldestRev[3]
            else:
                text = self.page.getOldVersion(oldestRev[0], get_redirect=True)
            text = self.textEngine.remove(text)
            length = self.textEngine.length(text)[0]
            ratio = float(self.length) / float(length)
            result.cl = self.evaluate(ratio >= (self.ratio + 1))
            result.value = msg['dykchecker-old-revision-value'].format(
                oldestRev[0], oldestRev[1], (now - oldestRev[1]).days, length, ratio - 1.0
            )
        self.results.append(result)