def article(self, req, form): """ Article page. Washes all the parameters and stores them in journal_defaults dict for subsequent format_elements. Passes on to logic function and eventually returns HTML. """ argd = wash_urlargd(form, {'name': (str, ""), 'issue': (str, ""), 'category': (str, ""), 'number': (str, ""), 'ln': (str, ""), } ) try: ln = wash_journal_language(argd['ln']) journal_name = wash_journal_name(ln, argd['name']) issue = wash_issue_number(ln, journal_name, argd['issue']) issue_year = issue.split('/')[1] issue_number = issue.split('/')[0] category = wash_category(ln, argd['category'], journal_name, issue_number) number = wash_article_number(ln, argd['number'], journal_name) recid = get_recid_from_legacy_number(issue, category, int(number)) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def regenerate(req, journal_name="", issue="", ln=CFG_SITE_LANG, confirmed_p="", publish_draft_articles_p=""): """ Clears the cache for the given issue. """ navtrail_previous_links = wjn.getnavtrail(' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a> > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py/administrate?journal_name=%s">%s</a>' % (CFG_SITE_URL, CFG_SITE_URL, journal_name, journal_name)) ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) issue_number = wash_issue_number(ln, journal_name, issue) confirmed_p = wash_url_argument(confirmed_p, 'str') == "confirmed" publish_draft_articles_p = wash_url_argument(publish_draft_articles_p, 'str') == "move" except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box()
def search(self, req, form): """ Display search interface """ argd = wash_urlargd(form, {'name': (str, ""), 'issue': (str, ""), 'archive_year': (str, ""), 'archive_issue': (str, ""), 'archive_select': (str, "False"), 'archive_date': (str, ""), 'archive_search': (str, "False"), 'ln': (str, CFG_SITE_LANG), 'verbose': (int, 0)}) try: # FIXME: if journal_name is empty, redirect ln = wash_journal_language(argd['ln']) washed_journal_name = wash_journal_name(ln, argd['name']) archive_issue = wash_issue_number(ln, washed_journal_name, argd['archive_issue']) archive_date = wash_archive_date(ln, washed_journal_name, argd['archive_date']) archive_select = argd['archive_select'] archive_search = argd['archive_search'] except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def issue_control(req, journal_name="", issue=[], ln=CFG_SITE_LANG, action="cfg"): """ Page that allows full control over creating, backtracing, adding to, removing from issues. """ navtrail_previous_links = wjn.getnavtrail(' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a> > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py/administrate?journal_name=%s">%s</a>' % (CFG_SITE_URL, CFG_SITE_URL, journal_name, journal_name)) ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) action = wash_url_argument(action, 'str') issue = wash_url_argument(issue, 'list') issues = [wash_issue_number(ln,journal_name, _issue) \ for _issue in issue \ if _issue != "ww/YYYY"] except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box()
def configure(req, journal_name=None, ln=CFG_SITE_LANG, xml_config=u'', action='edit'): """ Let admins configure the journal settings """ ln = wash_language(ln) _ = gettext_set_language(ln) if journal_name is None: navtrail_previous_links = wjn.getnavtrail(' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a>' % CFG_SITE_URL) else: navtrail_previous_links = wjn.getnavtrail(' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a> > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py/administrate?journal_name=%s">%s</a>' % (CFG_SITE_URL, CFG_SITE_URL, journal_name, journal_name)) if action in ['add', 'addDone']: page_title = _('Add Journal') else: page_title = _("Edit Settings") try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name, guess=False) xml_config = wash_url_argument(xml_config, 'str') action = wash_url_argument(action, 'str') except InvenioWebJournalNoJournalOnServerError, e: # Ok, no journal. Let the admin add one... pass
def search(self, req, form): """ Display search interface """ argd = wash_urlargd( form, { "name": (str, ""), "issue": (str, ""), "archive_year": (str, ""), "archive_issue": (str, ""), "archive_select": (str, "False"), "archive_date": (str, ""), "archive_search": (str, "False"), "ln": (str, CFG_SITE_LANG), "verbose": (int, 0), }, ) try: # FIXME: if journal_name is empty, redirect ln = wash_journal_language(argd["ln"]) washed_journal_name = wash_journal_name(ln, argd["name"]) archive_issue = wash_issue_number(ln, washed_journal_name, argd["archive_issue"]) archive_date = wash_archive_date(ln, washed_journal_name, argd["archive_date"]) archive_select = argd["archive_select"] archive_search = argd["archive_search"] except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def alert(req, journal_name="", ln=CFG_SITE_LANG, sent="False", plainText=u"", htmlMail="", recipients="", subject="", issue="", force="False"): """ Sends an email alert, in HTML/PlainText or only PlainText to a mailing list to alert for new journal releases. """ navtrail_previous_links = wjn.getnavtrail(' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a> > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py/administrate?journal_name=%s">%s</a>' % (CFG_SITE_URL, CFG_SITE_URL, journal_name, journal_name)) ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) issue = wash_issue_number(ln, journal_name, issue) plain_text = wash_url_argument(plainText, 'str') html_mail = wash_url_argument(htmlMail, 'str') recipients = wash_url_argument(recipients, 'str') subject = wash_url_argument(subject, 'str') sent = wash_url_argument(sent, 'str') force = wash_url_argument(force, 'str') except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box()
def administrate(self, req, form): """Index page.""" argd = wash_urlargd(form, {'name': (str, ""), 'ln': (str, "")}) try: ln = wash_journal_language(argd['ln']) journal_name = wash_journal_name(ln, argd['name']) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box()
def administrate(self, req, form): """Index page.""" argd = wash_urlargd(form, {"name": (str, ""), "ln": (str, "")}) try: ln = wash_journal_language(argd["ln"]) journal_name = wash_journal_name(ln, argd["name"]) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def contact(self, req, form): """ Display contact information for the journal. """ argd = wash_urlargd(form, {"name": (str, ""), "ln": (str, ""), "verbose": (int, 0)}) try: ln = wash_journal_language(argd["ln"]) washed_journal_name = wash_journal_name(ln, argd["name"]) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def popup(self, req, form): """ simple pass-through function that serves as a checker for popups. """ argd = wash_urlargd(form, {"name": (str, ""), "record": (str, ""), "ln": (str, "")}) try: ln = wash_journal_language(argd["ln"]) washed_journal_name = wash_journal_name(ln, argd["name"]) record = wash_popup_record(ln, argd["record"], washed_journal_name) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def contact(self, req, form): """ Display contact information for the journal. """ argd = wash_urlargd(form, {'name': (str, ""), 'ln': (str, ""), 'verbose': (int, 0) }) try: ln = wash_journal_language(argd['ln']) washed_journal_name = wash_journal_name(ln, argd['name']) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def popup(self, req, form): """ simple pass-through function that serves as a checker for popups. """ argd = wash_urlargd(form, {'name': (str, ""), 'record': (str, ""), 'ln': (str, "") }) try: ln = wash_journal_language(argd['ln']) washed_journal_name = wash_journal_name(ln, argd['name']) record = wash_popup_record(ln, argd['record'], washed_journal_name) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def index(self, req, form): """ Index page. Washes all the parameters and stores them in journal_defaults dict for subsequent format_elements. Passes on to logic function and eventually returns HTML. """ argd = wash_urlargd(form, {"name": (str, ""), "issue": (str, ""), "category": (str, ""), "ln": (str, "")}) try: ln = wash_journal_language(argd["ln"]) journal_name = wash_journal_name(ln, argd["name"]) issue_number = wash_issue_number(ln, journal_name, argd["issue"]) category = wash_category(ln, argd["category"], journal_name, issue_number) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def __call__(self, req, form): """ Maybe resolve the final / of a directory """ path = req.uri[1:].split("/") journal_name = None journal_issue_year = None journal_issue_number = None specific_category = None category = None article_id = None if len(path) > 1: journal_name = path[1] if len(path) > 2 and path[2].isdigit(): journal_issue_year = path[2] elif len(path) > 2 and not path[2].isdigit(): specific_category = urllib.unquote(path[2]) if len(path) > 3 and path[3].isdigit(): journal_issue_number = path[3] if len(path) > 4: category = urllib.unquote(path[4]) if len(path) > 5 and path[5].isdigit(): article_id = int(path[5]) ## Support for legacy journal/[empty]?(args*) urls. There are ## these parameters only in that case argd = wash_urlargd( form, { "name": (str, ""), "issue": (str, ""), "category": (str, ""), "ln": (str, CFG_SITE_LANG), "number": (int, None), "verbose": (int, 0), }, ) if "name" in form.keys() or "issue" in form.keys() or "category" in form.keys(): ln = wash_journal_language(argd["ln"]) try: journal_name = wash_journal_name(ln, argd["name"]) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req) except InvenioWebJournalNoNameError, e: return e.user_box(req)
def administrate(req, journal_name, ln=CFG_SITE_LANG): """ Shows the settings of a journal """ navtrail_previous_links = wjn.getnavtrail(' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a>' % CFG_SITE_URL) ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box()
def __call__(self, req, form): """ Maybe resolve the final / of a directory """ path = req.uri[1:].split('/') journal_name = None journal_issue_year = None journal_issue_number = None specific_category = None category = None article_id = None if len(path) > 1: journal_name = path[1] if len(path) > 2 and path[2].isdigit(): journal_issue_year = path[2] elif len(path) > 2 and not path[2].isdigit(): specific_category = urllib.unquote(path[2]) if len(path) > 3 and path[3].isdigit(): journal_issue_number = path[3] if len(path) > 4: category = urllib.unquote(path[4]) if len(path) > 5 and path[5].isdigit(): article_id = int(path[5]) ## Support for legacy journal/[empty]?(args*) urls. There are ## these parameters only in that case argd = wash_urlargd(form, {'name': (str, ""), 'issue': (str, ""), 'category': (str, ""), 'ln': (str, CFG_SITE_LANG), 'number': (int, None), 'verbose': (int, 0)} ) if 'name' in form.keys() or \ 'issue' in form.keys() or \ 'category' in form.keys(): ln = wash_journal_language(argd['ln']) try: journal_name = wash_journal_name(ln, argd['name']) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req) except InvenioWebJournalNoNameError, e: return e.user_box(req)
def feature_record(req, journal_name="", recid="", img_url="", ln=CFG_SITE_LANG, action=""): """ Interface to feature a record. Will be saved in a flat file. """ navtrail_previous_links = wjn.getnavtrail(' > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py">WebJournal Admin</a> > <a class="navtrail" href="%s/admin/webjournal/webjournaladmin.py/administrate?journal_name=%s">%s</a>' % (CFG_SITE_URL, CFG_SITE_URL, journal_name, journal_name)) ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box()
def index(self, req, form): """ Index page. Washes all the parameters and stores them in journal_defaults dict for subsequent format_elements. Passes on to logic function and eventually returns HTML. """ argd = wash_urlargd(form, {'name': (str, ""), 'issue': (str, ""), 'category': (str, ""), 'ln': (str, "")} ) try: ln = wash_journal_language(argd['ln']) journal_name = wash_journal_name(ln, argd['name']) issue_number = wash_issue_number(ln, journal_name, argd['issue']) category = wash_category(ln, argd['category'], journal_name, issue_number) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req)
def __call__(self, req, form): """ Maybe resolve the final / of a directory """ path = req.uri[1:].split('/') journal_name = None journal_issue_year = None journal_issue_number = None category = None article_id = None if len(path) > 1: journal_name = path[1] if len(path) > 2 and path[2].isdigit(): journal_issue_year = path[2] if len(path) > 3 and path[3].isdigit(): journal_issue_number = path[3] if len(path) > 4: category = urllib.unquote(path[4]) if len(path) > 5 and path[5].isdigit(): article_id = int(path[5]) ## Support for legacy journal/[empty]?(args*) urls. There are ## these parameters only in that case argd = wash_urlargd(form, {'name': (str, ""), 'issue': (str, ""), 'category': (str, ""), 'ln': (str, CFG_SITE_LANG), 'number': (int, None), 'verbose': (int, 0)} ) if 'name' in form.keys() or \ 'issue' in form.keys() or \ 'category' in form.keys(): ln = wash_journal_language(argd['ln']) try: journal_name = wash_journal_name(ln, argd['name']) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box() except InvenioWebJournalNoNameError, e: return e.user_box()
def index(req, ln=CFG_SITE_LANG, journal_name=None, action=""): """ Main administration page. Lists the journals, and offers options to edit them, delete them or add new journals """ navtrail_previous_links = wjn.getnavtrail() ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except: return error_page('Error', req) try: journal_name = wash_journal_name(ln, journal_name) action = wash_url_argument(action, 'str') except InvenioWebJournalNoJournalOnServerError, e: # Ok, no journal. Let the admin add one... pass
return e.user_box(req) category = wash_category(ln, argd['category'], journal_name, issue).replace(' ', '%20') redirect_to_url(req, CFG_SITE_URL + '/journal/%(name)s/%(issue_year)s/%(issue_number)s/%(category)s/?ln=%(ln)s' % \ {'name': journal_name, 'issue_year': issue_year, 'issue_number': issue_number, 'category': category, 'ln': ln}) ## End support for legacy urls # Check that given journal name exists and that it is written # with correct casing. redirect_p = False try: washed_journal_name = wash_journal_name(argd['ln'], journal_name) if washed_journal_name != journal_name: redirect_p = True except InvenioWebJournalNoNameError, e: return e.user_box(req) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req) # If some parameters are missing, deduce them and # redirect if not journal_issue_year or \ not journal_issue_number or \ not category or \ redirect_p or \ specific_category:
Lists the journals, and offers options to edit them, delete them or add new journals """ navtrail_previous_links = wjn.getnavtrail() ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except Error, e: return error_page(req) try: journal_name = wash_journal_name(ln, journal_name) action = wash_url_argument(action, 'str') except InvenioWebJournalNoJournalOnServerError, e: # Ok, no journal. Let the admin add one... pass except InvenioWebJournalNoNameError, e: register_exception(req=req) return e.user_box() if action in ['delete', 'askDelete']: # To perform these, one must be authorized auth = acc_authorize_action(getUid(req), 'cfgwebjournal', name=journal_name, with_editor_rights='yes') else: auth = acc_authorize_action(getUid(req), 'cfgwebjournal')
% { "name": journal_name, "issue_year": issue_year, "issue_number": issue_number, "category": category, "ln": ln, }, ) ## End support for legacy urls # Check that given journal name exists and that it is written # with correct casing. redirect_p = False try: washed_journal_name = wash_journal_name(argd["ln"], journal_name) if washed_journal_name != journal_name: redirect_p = True except InvenioWebJournalNoNameError, e: return e.user_box(req) except InvenioWebJournalNoJournalOnServerError, e: register_exception(req=req) return e.user_box(req) # If some parameters are missing, deduce them and # redirect if not journal_issue_year or not journal_issue_number or not category or redirect_p or specific_category: if not journal_issue_year or not journal_issue_number: journal_issue = get_current_issue(argd["ln"], washed_journal_name) journal_issue_year = journal_issue.split("/")[1] journal_issue_number = journal_issue.split("/")[0]
Lists the journals, and offers options to edit them, delete them or add new journals """ navtrail_previous_links = wjn.getnavtrail() ln = wash_language(ln) _ = gettext_set_language(ln) try: uid = getUid(req) except Error, e: return error_page(req) try: journal_name = wash_journal_name(ln, journal_name) action = wash_url_argument(action, 'str') except InvenioWebJournalNoJournalOnServerError, e: # Ok, no journal. Let the admin add one... pass except InvenioWebJournalNoNameError, e: register_exception(req=req) return e.user_box() if action in ['delete', 'askDelete']: # To perform these, one must be authorized auth = acc_authorize_action(getUid(req), 'cfgwebjournal', name=journal_name, with_editor_rights='yes') else: auth = acc_authorize_action(getUid(req), 'cfgwebjournal') if auth[0] == 0: return page(title=_('WebJournal Admin'),