def managedocfiles(self, req, form): """ Display admin interface to manage files of a record """ argd = wash_urlargd( form, { 'ln': (str, ''), 'access': (str, ''), 'recid': (int, None), 'do': (int, 0), 'cancel': (str, None), }) _ = gettext_set_language(argd['ln']) uid = getUid(req) user_info = collect_user_info(req) # Check authorization (auth_code, auth_msg) = acc_authorize_action(req, 'runbibdocfile') if auth_code and user_info['email'] == 'guest': # Ask to login target = CFG_SITE_SECURE_URL + '/youraccount/login' + \ make_canonical_urlargd({'ln' : argd['ln'], 'referer' : CFG_SITE_SECURE_URL + user_info['uri']}, {}) return redirect_to_url(req, target) elif auth_code: return page_not_authorized(req, referer="/%s/managedocfiles" % CFG_SITE_RECORD, uid=uid, text=auth_msg, ln=argd['ln'], navmenuid="admin") # Prepare navtrail navtrail = '''<a class="navtrail" href="%(CFG_SITE_URL)s/help/admin">Admin Area</a> > %(manage_files)s''' \ % {'CFG_SITE_URL': CFG_SITE_URL, 'manage_files': _("Manage Document Files")} body = '' if argd['do'] != 0 and not argd['cancel']: # Apply modifications working_dir = os.path.join( CFG_TMPSHAREDDIR, 'websubmit_upload_interface_config_' + str(uid), argd['access']) if not os.path.isdir(working_dir): # We accessed the url without preliminary steps # (we did not upload a file) # Our working dir does not exist # Display the file manager argd['do'] = 0 else: move_uploaded_files_to_storage(working_dir=working_dir, recid=argd['recid'], icon_sizes=['180>', '700>'], create_icon_doctypes=['*'], force_file_revision=False) # Clean temporary directory shutil.rmtree(working_dir) # Confirm modifications body += '<p style="color:#0f0">%s</p>' % \ (_('Your modifications to record #%i have been submitted') % argd['recid']) elif argd['cancel']: # Clean temporary directory working_dir = os.path.join( CFG_TMPSHAREDDIR, 'websubmit_upload_interface_config_' + str(uid), argd['access']) shutil.rmtree(working_dir) body += '<p style="color:#c00">%s</p>' % \ (_('Your modifications to record #%i have been cancelled') % argd['recid']) if not argd['recid'] or argd['do'] != 0: body += ''' <form method="post" action="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles"> <label for="recid">%(edit_record)s:</label> <input type="text" name="recid" id="recid" /> <input type="submit" value="%(edit)s" class="adminbutton" /> </form> ''' % { 'edit': _('Edit'), 'edit_record': _('Edit record'), 'CFG_SITE_URL': CFG_SITE_URL, 'CFG_SITE_RECORD': CFG_SITE_RECORD } access = time.strftime('%Y%m%d_%H%M%S') if argd['recid'] and argd['do'] == 0: # Displaying interface to manage files # Prepare navtrail title, dummy_description, dummy_keywords = websearch_templates.tmpl_record_page_header_content( req, argd['recid'], argd['ln']) navtrail = '''<a class="navtrail" href="%(CFG_SITE_URL)s/help/admin">Admin Area</a> > <a class="navtrail" href="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles">%(manage_files)s</a> > %(record)s: %(title)s ''' \ % {'CFG_SITE_URL': CFG_SITE_URL, 'title': title, 'manage_files': _("Document File Manager"), 'record': _("Record #%i") % argd['recid'], 'CFG_SITE_RECORD': CFG_SITE_RECORD} body += create_file_upload_interface(\ recid=argd['recid'], ln=argd['ln'], uid=uid, sbm_access=access, display_hidden_files=True, restrictions_and_desc=CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_RESTRICTIONS, doctypes_and_desc=CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_DOCTYPES, **CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_MISC)[1] body += '''<br /> <form method="post" action="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles"> <input type="hidden" name="recid" value="%(recid)s" /> <input type="hidden" name="do" value="1" /> <input type="hidden" name="access" value="%(access)s" /> <input type="hidden" name="ln" value="%(ln)s" /> <div style="font-size:small"> <input type="submit" name="cancel" value="%(cancel_changes)s" /> <input type="submit" onclick="user_must_confirm_before_leaving_page=false;return true;" class="adminbutton" name="submit" id="applyChanges" value="%(apply_changes)s" /> </div></form>''' % \ {'apply_changes': _("Apply changes"), 'cancel_changes': _("Cancel all changes"), 'recid': argd['recid'], 'access': access, 'ln': argd['ln'], 'CFG_SITE_URL': CFG_SITE_URL, 'CFG_SITE_RECORD': CFG_SITE_RECORD} body += websubmit_templates.tmpl_page_do_not_leave_submission_js( argd['ln'], enabled=True) return page(title = _("Document File Manager") + (argd['recid'] and (': ' + _("Record #%i") % argd['recid']) or ''), navtrail=navtrail, navtrail_append_title_p=0, metaheaderadd = get_upload_file_interface_javascript(form_url_params='?access='+access) + \ get_upload_file_interface_css(), body = body, uid = uid, language=argd['ln'], req=req, navmenuid='admin')
def managedocfilesasync(self, req, form): "Upload file and returns upload interface" argd = wash_urlargd( form, { 'ln': (str, ''), 'recid': (int, 1), 'doctype': (str, ''), 'access': (str, ''), 'indir': (str, ''), }) user_info = collect_user_info(req) include_headers = False # User submitted either through WebSubmit, or admin interface. if form.has_key('doctype') and form.has_key('indir') \ and form.has_key('access'): # Submitted through WebSubmit. Check rights include_headers = True working_dir = os.path.join(CFG_WEBSUBMIT_STORAGEDIR, argd['indir'], argd['doctype'], argd['access']) try: assert (working_dir == os.path.abspath(working_dir)) except AssertionError: raise apache.SERVER_RETURN(apache.HTTP_UNAUTHORIZED) try: # Retrieve recid from working_dir, safer. recid_fd = file(os.path.join(working_dir, 'SN')) recid = int(recid_fd.read()) recid_fd.close() except: recid = "" try: act_fd = file(os.path.join(working_dir, 'act')) action = act_fd.read() act_fd.close() except: action = "" # Is user authorized to perform this action? auth_code = acc_authorize_action( user_info, "submit", authorized_if_no_roles=not isGuestUser(getUid(req)), doctype=argd['doctype'], act=action)[0] if auth_code and not acc_is_role( "submit", doctype=argd['doctype'], act=action): # There is NO authorization plugged. User should have access auth_code = 0 else: # User must be allowed to attach files auth_code = acc_authorize_action(user_info, 'runbibdocfile')[0] recid = argd['recid'] if auth_code: raise apache.SERVER_RETURN(apache.HTTP_UNAUTHORIZED) return create_file_upload_interface(recid=recid, ln=argd['ln'], print_outside_form_tag=False, print_envelope=False, form=form, include_headers=include_headers, sbm_indir=argd['indir'], sbm_access=argd['access'], sbm_doctype=argd['doctype'], uid=user_info['uid'])[1]
def Create_Upload_Files_Interface(parameters, curdir, form, user_info=None): """ List files for revisions. You should use Move_Uploaded_Files_to_Storage.py function in your submission to apply the changes performed by users with this interface. @param parameters:(dictionary) - must contain: + maxsize: the max size allowed for uploaded files + minsize: the max size allowed for uploaded files + doctypes: the list of doctypes (like 'Main' or 'Additional') and their description that users can choose from when adding new files. - When no value is provided, users cannot add new file (they can only revise/delete/add format) - When a single value is given, it is used as default doctype for all new documents Eg: main=Main document|additional=Figure, schema. etc ('=' separates doctype and description '|' separates each doctype/description group) + restrictions: the list of restrictions (like 'Restricted' or 'No Restriction') and their description that users can choose from when adding/revising files. Restrictions can then be configured at the level of WebAccess. - When no value is provided, no restriction is applied - When a single value is given, it is used as default resctriction for all documents. - The first value of the list is used as default restriction if the user if not given the choice of the restriction. CHOOSE THE ORDER! Eg: =No restriction|restr=Restricted ('=' separates restriction and description '|' separates each restriction/description group) + canDeleteDoctypes: the list of doctypes that users are allowed to delete. Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canReviseDoctypes: the list of doctypes that users are allowed to revise Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canDescribeDoctypes: the list of doctypes that users are allowed to describe Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canCommentDoctypes: the list of doctypes that users are allowed to comment Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canKeepDoctypes: the list of doctypes for which users can choose to keep previous versions visible when revising a file (i.e. 'Keep previous version' checkbox). See also parameter 'keepDefault'. Note that this parameter is ~ignored when revising the attributes of a file (comment, description) without uploading a new file. See also parameter Move_Uploaded_Files_to_Storage.forceFileRevision Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canAddFormatDoctypes: the list of doctypes for which users can add new formats. If there is no value, then no 'add format' link nor warning about losing old formats are displayed. Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canRestrictDoctypes: the list of doctypes for which users can choose the access restrictions when adding or revising a file. If no value is given: - no restriction is applied if none is defined in the 'restrictions' parameter. - else the *first* value of the 'restrictions' parameter is used as default restriction. Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canRenameDoctypes: the list of doctypes that users are allowed to rename (when revising) Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canNameNewFiles: if user can choose the name of the files they upload (1) or not (0) + defaultFilenameDoctypes: Rename uploaded files to admin-chosen values. List here the the files in current submission directory that contain the names to use for each doctype. Eg: Main=RN|Additional=additional_filename ('=' separates doctype and file in curdir '|' separates each doctype/file group). If the same doctype is submitted several times, a"-%i" suffix is added to the name defined in the file. The default filenames are overriden by user-chosen names if you allow 'canNameNewFiles' or 'canRenameDoctypes'. + maxFilesDoctypes: the maximum number of files that users can upload for each doctype. Eg: Main=1|Additional=2 ('|' separated values) Do not specify the doctype here to have an unlimited number of files for a given doctype. + createRelatedFormats: if uploaded files get converted to whatever format we can (1) or not (0) + deferRelatedFormatsCreation: if creation of related format is scheduled to be run later, offline (1, default) or immediately/online just after the user has uploaded the file (0). Setting immediate conversion enables workflows to process the created files in following functions, but "blocks" the user. + keepDefault: the default behaviour for keeping or not previous version of files when users cannot choose (no value in canKeepDoctypes): keep (1) or not (0) Note that this parameter is ignored when revising the attributes of a file (comment, description) without uploading a new file. See also parameter Move_Uploaded_Files_to_Storage.forceFileRevision + showLinks: if we display links to files (1) when possible or not (0) + fileLabel: the label for the file field + filenameLabel: the label for the file name field + descriptionLabel: the label for the description field + commentLabel: the label for the comments field + restrictionLabel: the label in front of the restrictions list + startDoc: the name of a file in curdir that contains some text/markup to be printed *before* the file revision box + endDoc: the name of a file in curdir that contains some text/markup to be printed *after* the file revision box """ global sysno ln = wash_language(form["ln"]) _ = gettext_set_language(ln) out = "" ## Fetch parameters defined for this function ( minsize, maxsize, doctypes_and_desc, doctypes, can_delete_doctypes, can_revise_doctypes, can_describe_doctypes, can_comment_doctypes, can_keep_doctypes, can_rename_doctypes, can_add_format_to_doctypes, createRelatedFormats_p, can_name_new_files, keep_default, show_links, file_label, filename_label, description_label, comment_label, startDoc, endDoc, restrictions_and_desc, can_restrict_doctypes, restriction_label, doctypes_to_default_filename, max_files_for_doctype, deferRelatedFormatsCreation_p, ) = wash_function_parameters(parameters, curdir, ln) try: recid = int(sysno) except: recid = None out += "<center>" out += startDoc out += create_file_upload_interface( recid, form=form, print_outside_form_tag=True, print_envelope=True, include_headers=True, ln=ln, minsize=minsize, maxsize=maxsize, doctypes_and_desc=doctypes_and_desc, can_delete_doctypes=can_delete_doctypes, can_revise_doctypes=can_revise_doctypes, can_describe_doctypes=can_describe_doctypes, can_comment_doctypes=can_comment_doctypes, can_keep_doctypes=can_keep_doctypes, can_rename_doctypes=can_rename_doctypes, can_add_format_to_doctypes=can_add_format_to_doctypes, create_related_formats=createRelatedFormats_p, can_name_new_files=can_name_new_files, keep_default=keep_default, show_links=show_links, file_label=file_label, filename_label=filename_label, description_label=description_label, comment_label=comment_label, restrictions_and_desc=restrictions_and_desc, can_restrict_doctypes=can_restrict_doctypes, restriction_label=restriction_label, doctypes_to_default_filename=doctypes_to_default_filename, max_files_for_doctype=max_files_for_doctype, sbm_indir=None, sbm_doctype=None, sbm_access=None, uid=None, sbm_curdir=curdir, defer_related_formats_creation=deferRelatedFormatsCreation_p, )[1] out += endDoc out += "</center>" return out
def managedocfilesasync(self, req, form): "Upload file and returns upload interface" argd = wash_urlargd(form, { 'ln': (str, ''), 'recid': (int, 1), 'doctype': (str, ''), 'access': (str, ''), 'indir': (str, ''), }) user_info = collect_user_info(req) include_headers = False # User submitted either through WebSubmit, or admin interface. if form.has_key('doctype') and form.has_key('indir') \ and form.has_key('access'): # Submitted through WebSubmit. Check rights include_headers = True working_dir = os.path.join(CFG_WEBSUBMIT_STORAGEDIR, argd['indir'], argd['doctype'], argd['access']) try: assert(working_dir == os.path.abspath(working_dir)) except AssertionError: raise apache.SERVER_RETURN(apache.HTTP_UNAUTHORIZED) try: # Retrieve recid from working_dir, safer. recid_fd = file(os.path.join(working_dir, 'SN')) recid = int(recid_fd.read()) recid_fd.close() except: recid = "" try: act_fd = file(os.path.join(working_dir, 'act')) action = act_fd.read() act_fd.close() except: action = "" # Is user authorized to perform this action? auth_code = acc_authorize_action(user_info, "submit", authorized_if_no_roles=not isGuestUser(getUid(req)), doctype=argd['doctype'], act=action)[0] if auth_code and not acc_is_role("submit", doctype=argd['doctype'], act=action): # There is NO authorization plugged. User should have access auth_code = 0 else: # User must be allowed to attach files auth_code = acc_authorize_action(user_info, 'runbibdocfile')[0] recid = argd['recid'] if auth_code: raise apache.SERVER_RETURN(apache.HTTP_UNAUTHORIZED) return create_file_upload_interface(recid=recid, ln=argd['ln'], print_outside_form_tag=False, print_envelope=False, form=form, include_headers=include_headers, sbm_indir=argd['indir'], sbm_access=argd['access'], sbm_doctype=argd['doctype'], uid=user_info['uid'])[1]
def managedocfiles(self, req, form): """ Display admin interface to manage files of a record """ argd = wash_urlargd(form, { 'ln': (str, ''), 'access': (str, ''), 'recid': (int, None), 'do': (int, 0), 'cancel': (str, None), }) _ = gettext_set_language(argd['ln']) uid = getUid(req) user_info = collect_user_info(req) # Check authorization (auth_code, auth_msg) = acc_authorize_action(req, 'runbibdocfile') if auth_code and user_info['email'] == 'guest': # Ask to login target = CFG_SITE_SECURE_URL + '/youraccount/login' + \ make_canonical_urlargd({'ln' : argd['ln'], 'referer' : CFG_SITE_SECURE_URL + user_info['uri']}, {}) return redirect_to_url(req, target) elif auth_code: return page_not_authorized(req, referer="/%s/managedocfiles" % CFG_SITE_RECORD, uid=uid, text=auth_msg, ln=argd['ln'], navmenuid="admin") # Prepare navtrail navtrail = '''<a class="navtrail" href="%(CFG_SITE_URL)s/help/admin">Admin Area</a> > %(manage_files)s''' \ % {'CFG_SITE_URL': CFG_SITE_URL, 'manage_files': _("Manage Document Files")} body = '' if argd['do'] != 0 and not argd['cancel']: # Apply modifications working_dir = os.path.join(CFG_TMPSHAREDDIR, 'websubmit_upload_interface_config_' + str(uid), argd['access']) move_uploaded_files_to_storage(working_dir=working_dir, recid=argd['recid'], icon_sizes=['180>','700>'], create_icon_doctypes=['*'], force_file_revision=False) # Clean temporary directory shutil.rmtree(working_dir) # Confirm modifications body += '<p style="color:#0f0">%s</p>' % \ (_('Your modifications to record #%i have been submitted') % argd['recid']) elif argd['cancel']: # Clean temporary directory working_dir = os.path.join(CFG_TMPSHAREDDIR, 'websubmit_upload_interface_config_' + str(uid), argd['access']) shutil.rmtree(working_dir) body += '<p style="color:#c00">%s</p>' % \ (_('Your modifications to record #%i have been cancelled') % argd['recid']) if not argd['recid'] or argd['do'] != 0: body += ''' <form method="post" action="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles"> <label for="recid">%(edit_record)s:</label> <input type="text" name="recid" id="recid" /> <input type="submit" value="%(edit)s" class="adminbutton" /> </form> ''' % {'edit': _('Edit'), 'edit_record': _('Edit record'), 'CFG_SITE_URL': CFG_SITE_URL, 'CFG_SITE_RECORD': CFG_SITE_RECORD} access = time.strftime('%Y%m%d_%H%M%S') if argd['recid'] and argd['do'] == 0: # Displaying interface to manage files # Prepare navtrail title, dummy_description, dummy_keywords = websearch_templates.tmpl_record_page_header_content(req, argd['recid'], argd['ln']) navtrail = '''<a class="navtrail" href="%(CFG_SITE_URL)s/help/admin">Admin Area</a> > <a class="navtrail" href="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles">%(manage_files)s</a> > %(record)s: %(title)s ''' \ % {'CFG_SITE_URL': CFG_SITE_URL, 'title': title, 'manage_files': _("Document File Manager"), 'record': _("Record #%i") % argd['recid'], 'CFG_SITE_RECORD': CFG_SITE_RECORD} body += create_file_upload_interface(\ recid=argd['recid'], ln=argd['ln'], uid=uid, sbm_access=access, display_hidden_files=True, restrictions_and_desc=CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_RESTRICTIONS, doctypes_and_desc=CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_DOCTYPES, **CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_MISC)[1] body += '''<br /> <form method="post" action="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles"> <input type="hidden" name="recid" value="%(recid)s" /> <input type="hidden" name="do" value="1" /> <input type="hidden" name="access" value="%(access)s" /> <input type="hidden" name="ln" value="%(ln)s" /> <div style="font-size:small"> <input type="submit" name="cancel" value="%(cancel_changes)s" /> <input type="submit" onclick="user_must_confirm_before_leaving_page=false;return true;" class="adminbutton" name="submit" id="applyChanges" value="%(apply_changes)s" /> </div></form>''' % \ {'apply_changes': _("Apply changes"), 'cancel_changes': _("Cancel all changes"), 'recid': argd['recid'], 'access': access, 'ln': argd['ln'], 'CFG_SITE_URL': CFG_SITE_URL, 'CFG_SITE_RECORD': CFG_SITE_RECORD} body += websubmit_templates.tmpl_page_do_not_leave_submission_js(argd['ln'], enabled=True) return page(title = _("Document File Manager") + (argd['recid'] and (': ' + _("Record #%i") % argd['recid']) or ''), navtrail=navtrail, navtrail_append_title_p=0, metaheaderadd = get_upload_file_interface_javascript(form_url_params='?access='+access) + \ get_upload_file_interface_css(), body = body, uid = uid, language=argd['ln'], req=req, navmenuid='admin')
def managedocfiles(self, req, form): """ Display admin interface to manage files of a record """ argd = wash_urlargd( form, {"ln": (str, ""), "access": (str, ""), "recid": (int, None), "do": (int, 0), "cancel": (str, None)} ) _ = gettext_set_language(argd["ln"]) uid = getUid(req) user_info = collect_user_info(req) # Check authorization (auth_code, auth_msg) = acc_authorize_action(req, "runbibdocfile") if auth_code and user_info["email"] == "guest": # Ask to login target = ( CFG_SITE_SECURE_URL + "/youraccount/login" + make_canonical_urlargd({"ln": argd["ln"], "referer": CFG_SITE_SECURE_URL + user_info["uri"]}, {}) ) return redirect_to_url(req, target) elif auth_code: return page_not_authorized( req, referer="/%s/managedocfiles" % CFG_SITE_RECORD, uid=uid, text=auth_msg, ln=argd["ln"], navmenuid="admin", ) # Prepare navtrail navtrail = """<a class="navtrail" href="%(CFG_SITE_URL)s/help/admin">Admin Area</a> > %(manage_files)s""" % { "CFG_SITE_URL": CFG_SITE_URL, "manage_files": _("Manage Document Files"), } body = "" if argd["do"] != 0 and not argd["cancel"]: # Apply modifications working_dir = os.path.join( CFG_TMPSHAREDDIR, "websubmit_upload_interface_config_" + str(uid), argd["access"] ) if not os.path.isdir(working_dir): # We accessed the url without preliminary steps # (we did not upload a file) # Our working dir does not exist # Display the file manager argd["do"] = 0 else: move_uploaded_files_to_storage( working_dir=working_dir, recid=argd["recid"], icon_sizes=["180>", "700>"], create_icon_doctypes=["*"], force_file_revision=False, ) # Clean temporary directory shutil.rmtree(working_dir) # Confirm modifications body += '<p style="color:#0f0">%s</p>' % ( _("Your modifications to record #%i have been submitted") % argd["recid"] ) elif argd["cancel"]: # Clean temporary directory working_dir = os.path.join( CFG_TMPSHAREDDIR, "websubmit_upload_interface_config_" + str(uid), argd["access"] ) shutil.rmtree(working_dir) body += '<p style="color:#c00">%s</p>' % ( _("Your modifications to record #%i have been cancelled") % argd["recid"] ) if not argd["recid"] or argd["do"] != 0: body += """ <form method="post" action="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles"> <label for="recid">%(edit_record)s:</label> <input type="text" name="recid" id="recid" /> <input type="submit" value="%(edit)s" class="adminbutton" /> </form> """ % { "edit": _("Edit"), "edit_record": _("Edit record"), "CFG_SITE_URL": CFG_SITE_URL, "CFG_SITE_RECORD": CFG_SITE_RECORD, } access = time.strftime("%Y%m%d_%H%M%S") if argd["recid"] and argd["do"] == 0: # Displaying interface to manage files # Prepare navtrail title, dummy_description, dummy_keywords = websearch_templates.tmpl_record_page_header_content( req, argd["recid"], argd["ln"] ) navtrail = """<a class="navtrail" href="%(CFG_SITE_URL)s/help/admin">Admin Area</a> > <a class="navtrail" href="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles">%(manage_files)s</a> > %(record)s: %(title)s """ % { "CFG_SITE_URL": CFG_SITE_URL, "title": title, "manage_files": _("Document File Manager"), "record": _("Record #%i") % argd["recid"], "CFG_SITE_RECORD": CFG_SITE_RECORD, } body += create_file_upload_interface( recid=argd["recid"], ln=argd["ln"], uid=uid, sbm_access=access, display_hidden_files=True, restrictions_and_desc=CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_RESTRICTIONS, doctypes_and_desc=CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_DOCTYPES, **CFG_BIBDOCFILE_DOCUMENT_FILE_MANAGER_MISC )[1] body += """<br /> <form method="post" action="%(CFG_SITE_URL)s/%(CFG_SITE_RECORD)s/managedocfiles"> <input type="hidden" name="recid" value="%(recid)s" /> <input type="hidden" name="do" value="1" /> <input type="hidden" name="access" value="%(access)s" /> <input type="hidden" name="ln" value="%(ln)s" /> <div style="font-size:small"> <input type="submit" name="cancel" value="%(cancel_changes)s" /> <input type="submit" onclick="user_must_confirm_before_leaving_page=false;return true;" class="adminbutton" name="submit" id="applyChanges" value="%(apply_changes)s" /> </div></form>""" % { "apply_changes": _("Apply changes"), "cancel_changes": _("Cancel all changes"), "recid": argd["recid"], "access": access, "ln": argd["ln"], "CFG_SITE_URL": CFG_SITE_URL, "CFG_SITE_RECORD": CFG_SITE_RECORD, } body += websubmit_templates.tmpl_page_do_not_leave_submission_js(argd["ln"], enabled=True) return page( title=_("Document File Manager") + (argd["recid"] and (": " + _("Record #%i") % argd["recid"]) or ""), navtrail=navtrail, navtrail_append_title_p=0, metaheaderadd=get_upload_file_interface_javascript(form_url_params="?access=" + access) + get_upload_file_interface_css(), body=body, uid=uid, language=argd["ln"], req=req, navmenuid="admin", )
def Create_Upload_Files_Interface(parameters, curdir, form, user_info=None): """ List files for revisions. You should use Move_Uploaded_Files_to_Storage.py function in your submission to apply the changes performed by users with this interface. @param parameters:(dictionary) - must contain: + maxsize: the max size allowed for uploaded files + minsize: the max size allowed for uploaded files + doctypes: the list of doctypes (like 'Main' or 'Additional') and their description that users can choose from when adding new files. - When no value is provided, users cannot add new file (they can only revise/delete/add format) - When a single value is given, it is used as default doctype for all new documents Eg: main=Main document|additional=Figure, schema. etc ('=' separates doctype and description '|' separates each doctype/description group) + restrictions: the list of restrictions (like 'Restricted' or 'No Restriction') and their description that users can choose from when adding/revising files. Restrictions can then be configured at the level of WebAccess. - When no value is provided, no restriction is applied - When a single value is given, it is used as default resctriction for all documents. - The first value of the list is used as default restriction if the user if not given the choice of the restriction. CHOOSE THE ORDER! Eg: =No restriction|restr=Restricted ('=' separates restriction and description '|' separates each restriction/description group) + canDeleteDoctypes: the list of doctypes that users are allowed to delete. Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canReviseDoctypes: the list of doctypes that users are allowed to revise Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canDescribeDoctypes: the list of doctypes that users are allowed to describe Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canCommentDoctypes: the list of doctypes that users are allowed to comment Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canKeepDoctypes: the list of doctypes for which users can choose to keep previous versions visible when revising a file (i.e. 'Keep previous version' checkbox). See also parameter 'keepDefault'. Note that this parameter is ~ignored when revising the attributes of a file (comment, description) without uploading a new file. See also parameter Move_Uploaded_Files_to_Storage.forceFileRevision Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canAddFormatDoctypes: the list of doctypes for which users can add new formats. If there is no value, then no 'add format' link nor warning about losing old formats are displayed. Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canRestrictDoctypes: the list of doctypes for which users can choose the access restrictions when adding or revising a file. If no value is given: - no restriction is applied if none is defined in the 'restrictions' parameter. - else the *first* value of the 'restrictions' parameter is used as default restriction. Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canRenameDoctypes: the list of doctypes that users are allowed to rename (when revising) Eg: Main|Additional ('|' separated values) Use '*' for all doctypes + canNameNewFiles: if user can choose the name of the files they upload (1) or not (0) + defaultFilenameDoctypes: Rename uploaded files to admin-chosen values. List here the the files in current submission directory that contain the names to use for each doctype. Eg: Main=RN|Additional=additional_filename ('=' separates doctype and file in curdir '|' separates each doctype/file group). If the same doctype is submitted several times, a"-%i" suffix is added to the name defined in the file. The default filenames are overriden by user-chosen names if you allow 'canNameNewFiles' or 'canRenameDoctypes'. + maxFilesDoctypes: the maximum number of files that users can upload for each doctype. Eg: Main=1|Additional=2 ('|' separated values) Do not specify the doctype here to have an unlimited number of files for a given doctype. + createRelatedFormats: if uploaded files get converted to whatever format we can (1) or not (0) + deferRelatedFormatsCreation: if creation of related format is scheduled to be run later, offline (1, default) or immediately/online just after the user has uploaded the file (0). Setting immediate conversion enables workflows to process the created files in following functions, but "blocks" the user. + keepDefault: the default behaviour for keeping or not previous version of files when users cannot choose (no value in canKeepDoctypes): keep (1) or not (0) Note that this parameter is ignored when revising the attributes of a file (comment, description) without uploading a new file. See also parameter Move_Uploaded_Files_to_Storage.forceFileRevision + showLinks: if we display links to files (1) when possible or not (0) + fileLabel: the label for the file field + filenameLabel: the label for the file name field + descriptionLabel: the label for the description field + commentLabel: the label for the comments field + restrictionLabel: the label in front of the restrictions list + startDoc: the name of a file in curdir that contains some text/markup to be printed *before* the file revision box + endDoc: the name of a file in curdir that contains some text/markup to be printed *after* the file revision box """ global sysno ln = wash_language(form['ln']) _ = gettext_set_language(ln) out = '' ## Fetch parameters defined for this function (minsize, maxsize, doctypes_and_desc, doctypes, can_delete_doctypes, can_revise_doctypes, can_describe_doctypes, can_comment_doctypes, can_keep_doctypes, can_rename_doctypes, can_add_format_to_doctypes, createRelatedFormats_p, can_name_new_files, keep_default, show_links, file_label, filename_label, description_label, comment_label, startDoc, endDoc, restrictions_and_desc, can_restrict_doctypes, restriction_label, doctypes_to_default_filename, max_files_for_doctype, deferRelatedFormatsCreation_p) = \ wash_function_parameters(parameters, curdir, ln) try: recid = int(sysno) except: recid = None out += '<center>' out += startDoc out += create_file_upload_interface(recid, form=form, print_outside_form_tag=True, print_envelope=True, include_headers=True, ln=ln, minsize=minsize, maxsize=maxsize, doctypes_and_desc=doctypes_and_desc, can_delete_doctypes=can_delete_doctypes, can_revise_doctypes=can_revise_doctypes, can_describe_doctypes=can_describe_doctypes, can_comment_doctypes=can_comment_doctypes, can_keep_doctypes=can_keep_doctypes, can_rename_doctypes=can_rename_doctypes, can_add_format_to_doctypes=can_add_format_to_doctypes, create_related_formats=createRelatedFormats_p, can_name_new_files=can_name_new_files, keep_default=keep_default, show_links=show_links, file_label=file_label, filename_label=filename_label, description_label=description_label, comment_label=comment_label, restrictions_and_desc=restrictions_and_desc, can_restrict_doctypes=can_restrict_doctypes, restriction_label=restriction_label, doctypes_to_default_filename=doctypes_to_default_filename, max_files_for_doctype=max_files_for_doctype, sbm_indir=None, sbm_doctype=None, sbm_access=None, uid=None, sbm_curdir=curdir, defer_related_formats_creation=deferRelatedFormatsCreation_p)[1] out += endDoc out += '</center>' return out