Skip to content
Commits on Source (1)
......@@ -91,7 +91,7 @@ On the creation of the upload process, the email is sent to the server in clear
### Notes
Some notes can be saved by the submitter for tenprintcard and latent images. The notes are encrypted on the client-side using AES with the CSK key.
Some notes can be saved by the submitter for tenprintcard and mark images. The notes are encrypted on the client-side using AES with the CSK key.
### Files names
......
......@@ -6,7 +6,7 @@
color: #cccccc;
}
#icnml_latents_dropzone {
#icnml_marks_dropzone {
display: grid;
grid-gap: 3px;
grid-template-columns: repeat( 5, 1fr );
......@@ -15,7 +15,7 @@
vertical-align: middle;
line-height: 100px;
}
#icnml_latents_dropzone > div {
#icnml_marks_dropzone > div {
border: 1px solid #707070;
border-radius: 5px;
}
......
......@@ -1673,7 +1673,7 @@ def dek_delete_fully():
@login_required
def upload_file():
"""
Main function dealing with the upload of files (tenprint, latent and consent forms).
Main function dealing with the upload of files (tenprint, mark and consent forms).
This function accept traditionals images and NIST files for the fingerprint data,
and PDFs for the consent forms.
"""
......@@ -1810,7 +1810,7 @@ def upload_file():
} )
else:
if upload_type in [ "latent_target", "latent_incidental", "tenprint_card_front", "tenprint_card_back" ]:
if upload_type in [ "mark_target", "mark_incidental", "tenprint_card_front", "tenprint_card_back" ]:
app.logger.info( "Image file type: {}".format( upload_type ) )
img = Image.open( fp )
......@@ -2049,7 +2049,7 @@ def submission_do_new():
@submission_has_access
def submission_upload_tplp( submission_id ):
"""
Serve the page to upload tenprint and latent images files.
Serve the page to upload tenprint and mark images files.
This page is not accessible if a consent form is not available in the
database for this particular donor.
"""
......@@ -2188,17 +2188,17 @@ def submission_list():
donors = donors
)
@app.route( baseurl + "/submission/<submission_id>/latent/list" )
@app.route( baseurl + "/submission/<submission_id>/latent/list/<latent_type>" )
@app.route( baseurl + "/submission/<submission_id>/mark/list" )
@app.route( baseurl + "/submission/<submission_id>/mark/list/<mark_type>" )
@submission_has_access
def submission_latent_list( submission_id, latent_type = "all" ):
def submission_mark_list( submission_id, mark_type = "all" ):
"""
Get the list of latent for a particular submission folder.
Get the list of mark for a particular submission folder.
"""
app.logger.info( "Get the list of latent for the submission '{}'".format( submission_id ) )
app.logger.debug( "latent_type: {}".format( latent_type ) )
app.logger.info( "Get the list of mark for the submission '{}'".format( submission_id ) )
app.logger.debug( "mark_type: {}".format( mark_type ) )
if latent_type in [ "target", "incidental", "all" ]:
if mark_type in [ "target", "incidental", "all" ]:
sql = "SELECT id, nickname FROM submissions WHERE uuid = %s"
r = config.db.query( sql, ( submission_id, ) )
case_id, nickname = r.fetchone()
......@@ -2210,12 +2210,12 @@ def submission_latent_list( submission_id, latent_type = "all" ):
LEFT JOIN files_type ON files.type = files_type.id
WHERE folder = %s AND
"""
if latent_type == "target":
sql += " files_type.name = 'latent_target'"
elif latent_type == "incidental":
sql += " files_type.name = 'latent_incidental'"
elif latent_type == "all":
sql += " ( files_type.name = 'latent_target' OR files_type.name = 'latent_incidental' )"
if mark_type == "target":
sql += " files_type.name = 'mark_target'"
elif mark_type == "incidental":
sql += " files_type.name = 'mark_incidental'"
elif mark_type == "all":
sql += " ( files_type.name = 'mark_target' OR files_type.name = 'mark_incidental' )"
sql += " ORDER BY files.id DESC"
r = config.db.query( sql, ( case_id, ) )
......@@ -2225,12 +2225,12 @@ def submission_latent_list( submission_id, latent_type = "all" ):
v[ "filename" ] = do_decrypt_user_session( v[ "filename" ] )
v[ "size" ] = round( ( float( v[ "size" ] ) / ( 1024 * 1024 ) ) * 100 ) / 100
app.logger.debug( "{} latents for '{}'".format( len( files ), submission_id ) )
app.logger.debug( "{} marks for '{}'".format( len( files ), submission_id ) )
return my_render_template(
"submission/latent_list.html",
"submission/mark_list.html",
submission_id = submission_id,
latent_type = latent_type,
mark_type = mark_type,
files = files,
nickname = nickname
)
......@@ -2238,15 +2238,15 @@ def submission_latent_list( submission_id, latent_type = "all" ):
else:
return abort( 403 )
@app.route( baseurl + "/submission/<submission_id>/latent/<latent_id>" )
@app.route( baseurl + "/submission/<submission_id>/mark/<mark_id>" )
@submission_has_access
def submission_latent( submission_id, latent_id ):
def submission_mark( submission_id, mark_id ):
"""
Serve the page to edit a particular latent image.
Serve the page to edit a particular mark image.
"""
app.logger.info( "Serve the latent page edit" )
app.logger.info( "Serve the mark page edit" )
app.logger.debug( "submission {}".format( submission_id ) )
app.logger.debug( "latent {}".format( latent_id ) )
app.logger.debug( "mark {}".format( mark_id ) )
sql = "SELECT id, nickname FROM submissions WHERE uuid = %s"
r = config.db.query( sql, ( submission_id, ) )
......@@ -2267,30 +2267,30 @@ def submission_latent( submission_id, latent_id ):
files.uuid = %s
"""
r = config.db.query( sql, ( submission_folder_id, latent_id, ) )
latent = r.fetchone()
latent[ "size" ] = round( 100 * float( latent[ "size" ] ) / ( 1024 * 1024 ) ) / 100
latent[ "filename" ] = do_decrypt_user_session( latent[ "filename" ] )
latent[ "note" ] = do_decrypt_user_session( latent[ "note" ] )
latent[ "file_type" ] = latent[ "file_type" ].replace( "latent_", "" )
r = config.db.query( sql, ( submission_folder_id, mark_id, ) )
mark = r.fetchone()
mark[ "size" ] = round( 100 * float( mark[ "size" ] ) / ( 1024 * 1024 ) ) / 100
mark[ "filename" ] = do_decrypt_user_session( mark[ "filename" ] )
mark[ "note" ] = do_decrypt_user_session( mark[ "note" ] )
mark[ "file_type" ] = mark[ "file_type" ].replace( "mark_", "" )
return my_render_template(
"submission/latent.html",
"submission/mark.html",
submission_id = submission_id,
nickname = nickname,
file = latent
file = mark
)
@app.route( baseurl + "/submission/<submission_id>/latent/<latent_id>/pfsp" )
@app.route( baseurl + "/submission/<submission_id>/mark/<mark_id>/pfsp" )
@submission_has_access
def submission_latent_pfsp( submission_id, latent_id ):
def submission_mark_pfsp( submission_id, mark_id ):
"""
Serve the page to set the PFSP information (location on the finger
or the palm print) for the latent.
or the palm print) for the mark.
"""
app.logger.info( "Serve the PFSP edit page" )
app.logger.debug( "submission {}".format( submission_id ) )
app.logger.debug( "latent {}".format( latent_id ) )
app.logger.debug( "mark {}".format( mark_id ) )
sql = "SELECT id, nickname FROM submissions WHERE uuid = %s"
r = config.db.query( sql, ( submission_id, ) )
......@@ -2311,18 +2311,18 @@ def submission_latent_pfsp( submission_id, latent_id ):
files.uuid = %s
"""
r = config.db.query( sql, ( submission_folder_id, latent_id, ) )
latent = r.fetchone()
latent[ "size" ] = round( 100 * float( latent[ "size" ] ) / ( 1024 * 1024 ) ) / 100
latent[ "filename" ] = do_decrypt_user_session( latent[ "filename" ] )
latent[ "note" ] = do_decrypt_user_session( latent[ "note" ] )
latent[ "file_type" ] = latent[ "file_type" ].replace( "latent_", "" )
r = config.db.query( sql, ( submission_folder_id, mark_id, ) )
mark = r.fetchone()
mark[ "size" ] = round( 100 * float( mark[ "size" ] ) / ( 1024 * 1024 ) ) / 100
mark[ "filename" ] = do_decrypt_user_session( mark[ "filename" ] )
mark[ "note" ] = do_decrypt_user_session( mark[ "note" ] )
mark[ "file_type" ] = mark[ "file_type" ].replace( "mark_", "" )
app.logger.debug( "file size: {}Mo".format( latent[ "size" ] ) )
app.logger.debug( "file size: {}Mo".format( mark[ "size" ] ) )
sql = "SELECT pfsp FROM latent_info WHERE uuid = %s"
sql = "SELECT pfsp FROM mark_info WHERE uuid = %s"
try:
current_pfsp = config.db.query( sql, ( latent_id, ) ).fetchone()[ 0 ]
current_pfsp = config.db.query( sql, ( mark_id, ) ).fetchone()[ 0 ]
except:
current_pfsp = None
......@@ -2333,34 +2333,34 @@ def submission_latent_pfsp( submission_id, latent_id ):
current_pfsp = ",".join( z[ "sel" ] )
return my_render_template(
"submission/latent_pfsp.html",
"submission/mark_pfsp.html",
submission_id = submission_id,
nickname = nickname,
file = latent,
file = mark,
pfsp_zones = pfsp.zones,
current_pfsp = current_pfsp
)
@app.route( baseurl + "/submission/<submission_id>/latent/<latent_id>/set/pfsp", methods = [ "POST" ] )
@app.route( baseurl + "/submission/<submission_id>/mark/<mark_id>/set/pfsp", methods = [ "POST" ] )
@submission_has_access
def submission_latent_pfsp_set( submission_id, latent_id ):
def submission_mark_pfsp_set( submission_id, mark_id ):
"""
Save the PFSP information relative to a latent.
Save the PFSP information relative to a mark.
"""
app.logger.info( "Save the PFSP for submission '{}' latent '{}'".format( submission_id, latent_id ) )
app.logger.info( "Save the PFSP for submission '{}' mark '{}'".format( submission_id, mark_id ) )
pfsp = request.form.get( "pfsp" )
sql = "SELECT id FROM latent_info WHERE uuid = %s"
q = config.db.query( sql, ( latent_id, ) ).fetchone()
sql = "SELECT id FROM mark_info WHERE uuid = %s"
q = config.db.query( sql, ( mark_id, ) ).fetchone()
if q == None:
sql = utils.sql.sql_insert_generate( "latent_info", [ "uuid", "pfsp" ] )
config.db.query( sql, ( latent_id, pfsp, ) )
sql = utils.sql.sql_insert_generate( "mark_info", [ "uuid", "pfsp" ] )
config.db.query( sql, ( mark_id, pfsp, ) )
else:
sql = "UPDATE latent_info SET pfsp = %s WHERE uuid = %s"
config.db.query( sql, ( pfsp, latent_id, ) )
sql = "UPDATE mark_info SET pfsp = %s WHERE uuid = %s"
config.db.query( sql, ( pfsp, mark_id, ) )
config.db.commit()
......@@ -2368,20 +2368,20 @@ def submission_latent_pfsp_set( submission_id, latent_id ):
"error": False
} )
@app.route( baseurl + "/submission/<submission_id>/latent/<latent_id>/delete" )
@app.route( baseurl + "/submission/<submission_id>/mark/<mark_id>/delete" )
@submission_has_access
def submission_latent_delete( submission_id, latent_id ):
def submission_mark_delete( submission_id, mark_id ):
"""
Delete a latent from the database.
Delete a mark from the database.
"""
app.logger.info( "Delete latent '{}' from submission '{}'".format( latent_id, submission_id ) )
app.logger.info( "Delete mark '{}' from submission '{}'".format( mark_id, submission_id ) )
sql = "SELECT id FROM submissions WHERE submitter_id = %s AND uuid = %s"
q = config.db.query( sql, ( session[ "user_id" ], submission_id, ) )
if q != None:
sql = "DELETE FROM files WHERE creator = %s AND uuid = %s"
config.db.query( sql, ( session[ "user_id" ], latent_id, ) )
config.db.query( sql, ( session[ "user_id" ], mark_id, ) )
config.db.commit()
return jsonify( {
......@@ -3203,8 +3203,8 @@ def user_myprofile_tenprint():
Serve the page to see all the information related to the current user.
This page is the summary of all informations related to the current logged user,
i.e. the tenprint cards and latent images. The consent form, beeing mendatory to
upload the tenprint and latent images, and beeing encrypted in the database, is
i.e. the tenprint cards and mark images. The consent form, beeing mendatory to
upload the tenprint and mark images, and beeing encrypted in the database, is
not accessible by the user via this interface. The consent form has been sent the
the donor by email anyways before uploading any of the images.
"""
......
......@@ -66,8 +66,8 @@ ALTER TABLE ONLY public.files_type ALTER COLUMN id SET DEFAULT nextval('public.f
INSERT INTO public.files_type (id, name, "desc") VALUES (0, 'consent_form', 'Consent form');
INSERT INTO public.files_type (id, name, "desc") VALUES (1, 'tenprint_card_front', 'Tenprint card front');
INSERT INTO public.files_type (id, name, "desc") VALUES (2, 'tenprint_card_back', 'Tenprint card back');
INSERT INTO public.files_type (id, name, "desc") VALUES (3, 'latent_target', 'Latent target');
INSERT INTO public.files_type (id, name, "desc") VALUES (4, 'latent_incidental', 'Latent incidental');
INSERT INTO public.files_type (id, name, "desc") VALUES (3, 'mark_target', 'Mark target');
INSERT INTO public.files_type (id, name, "desc") VALUES (4, 'mark_incidental', 'Mark incidental');
INSERT INTO public.files_type (id, name, "desc") VALUES (5, 'tenprint_nist', 'TP NIST file');
......
......@@ -18,23 +18,23 @@ SET default_tablespace = '';
SET default_with_oids = false;
--
-- Name: latent_info; Type: TABLE; Schema: public; Owner: icnml
-- Name: mark_info; Type: TABLE; Schema: public; Owner: icnml
--
CREATE TABLE public.latent_info (
CREATE TABLE public.mark_info (
id integer NOT NULL,
uuid uuid NOT NULL,
pfsp character varying
);
ALTER TABLE public.latent_info OWNER TO icnml;
ALTER TABLE public.mark_info OWNER TO icnml;
--
-- Name: latent_info_id_seq; Type: SEQUENCE; Schema: public; Owner: icnml
-- Name: mark_info_id_seq; Type: SEQUENCE; Schema: public; Owner: icnml
--
CREATE SEQUENCE public.latent_info_id_seq
CREATE SEQUENCE public.mark_info_id_seq
AS integer
START WITH 1
INCREMENT BY 1
......@@ -43,20 +43,20 @@ CREATE SEQUENCE public.latent_info_id_seq
CACHE 1;
ALTER TABLE public.latent_info_id_seq OWNER TO icnml;
ALTER TABLE public.mark_info_id_seq OWNER TO icnml;
--
-- Name: latent_info_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: icnml
-- Name: mark_info_id_seq; Type: SEQUENCE OWNED BY; Schema: public; Owner: icnml
--
ALTER SEQUENCE public.latent_info_id_seq OWNED BY public.latent_info.id;
ALTER SEQUENCE public.mark_info_id_seq OWNED BY public.mark_info.id;
--
-- Name: latent_info id; Type: DEFAULT; Schema: public; Owner: icnml
-- Name: mark_info id; Type: DEFAULT; Schema: public; Owner: icnml
--
ALTER TABLE ONLY public.latent_info ALTER COLUMN id SET DEFAULT nextval('public.latent_info_id_seq'::regclass);
ALTER TABLE ONLY public.mark_info ALTER COLUMN id SET DEFAULT nextval('public.mark_info_id_seq'::regclass);
--
......
......@@ -84,17 +84,17 @@
</div>
<div style="text-align: right;">
<label for="latents_target">Latent(s)<br />target</label>
<label for="marks_target">Mark(s)<br />target</label>
</div>
<div>
<div id="latents_target_dropzone" class="dropzone"></div>
<div id="marks_target_dropzone" class="dropzone"></div>
</div>
<div style="text-align: right;">
<label for="latents_incidental">Latent(s)<br />incidental</label>
<label for="marks_incidental">Mark(s)<br />incidental</label>
</div>
<div>
<div id="latents_incidental_dropzone" class="dropzone"></div>
<div id="marks_incidental_dropzone" class="dropzone"></div>
</div>
</div>
......@@ -105,12 +105,12 @@
<span class="ui-button-text">Tenprint card(s)</span>
</a>
<br />
<a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only icnml_next_button" id="latent_target_button" role="button" aria-disabled="false">
<span class="ui-button-text">Latent(s) target</span>
<a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only icnml_next_button" id="mark_target_button" role="button" aria-disabled="false">
<span class="ui-button-text">Mark(s) target</span>
</a>
<br />
<a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only icnml_next_button" id="latent_incidental_button" role="button" aria-disabled="false">
<span class="ui-button-text">Latent(s) incidental</span>
<a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only icnml_next_button" id="mark_incidental_button" role="button" aria-disabled="false">
<span class="ui-button-text">Mark(s) incidental</span>
</a>
</div>
</div>
......@@ -216,13 +216,13 @@
$( function()
{
new Dropzone(
"#latents_target_dropzone",
"#marks_target_dropzone",
{
url: "{{ url_for( 'upload_file' ) }}",
timeout: 600000,
createImageThumbnails: false,
params: {
"upload_type": "latent_target",
"upload_type": "mark_target",
"submission_id": submission_id
},
renameFile: function( file )
......@@ -237,7 +237,7 @@
var ext = "." + file.name.split( "." ).pop();
this.options.params[ "extension" ] = ext;
$( "#latents_target_dropzone > .dz-default.dz-message" ).remove();
$( "#marks_target_dropzone > .dz-default.dz-message" ).remove();
} )
.on( "success", function( p ) {
var response = JSON.parse( p.xhr.response );
......@@ -253,13 +253,13 @@
$( function()
{
new Dropzone(
"#latents_incidental_dropzone",
"#marks_incidental_dropzone",
{
url: "{{ url_for( 'upload_file' ) }}",
timeout: 600000,
createImageThumbnails: false,
params: {
"upload_type": "latent_incidental",
"upload_type": "mark_incidental",
"submission_id": submission_id
},
renameFile: function( file )
......@@ -274,7 +274,7 @@
var ext = "." + file.name.split( "." ).pop();
this.options.params[ "extension" ] = ext;
$( "#latents_incidental_dropzone > .dz-default.dz-message" ).remove();
$( "#marks_incidental_dropzone > .dz-default.dz-message" ).remove();
} )
.on( "success", function( p ) {
var response = JSON.parse( p.xhr.response );
......@@ -295,14 +295,14 @@
window.location = "{{ url_for( 'submission_tenprint_list', submission_id = submission_id ) }}";
} );
$( "#latent_target_button" ).on( "click", function()
$( "#mark_target_button" ).on( "click", function()
{
window.location = "{{ url_for( 'submission_latent_list', submission_id = submission_id, latent_type = 'target' ) }}";
window.location = "{{ url_for( 'submission_mark_list', submission_id = submission_id, mark_type = 'target' ) }}";
} );
$( "#latent_incidental_button" ).on( "click", function()
$( "#mark_incidental_button" ).on( "click", function()
{
window.location = "{{ url_for( 'submission_latent_list', submission_id = submission_id, latent_type = 'incidental' ) }}";
window.location = "{{ url_for( 'submission_mark_list', submission_id = submission_id, mark_type = 'incidental' ) }}";
} );
$( "#icnml_navigation_updatedonor" )
......
......@@ -35,7 +35,7 @@
note = encrypt( note, password_local );
$.ajax( {
url: "{{ url_for( 'submission_file_set_note', submission_id = submission_id, tenprint_id = file[ 'uuid' ], file_type = 'latent' ) }}",
url: "{{ url_for( 'submission_file_set_note', submission_id = submission_id, tenprint_id = file[ 'uuid' ], file_type = 'mark' ) }}",
dataType: "json",
method: "POST",
data: {
......@@ -46,27 +46,27 @@
var next_information = function()
{
window.location = "{{ url_for( 'submission_latent_pfsp', submission_id = submission_id, latent_id = file[ 'uuid' ] ) }}";
window.location = "{{ url_for( 'submission_mark_pfsp', submission_id = submission_id, mark_id = file[ 'uuid' ] ) }}";
}
var delete_latent = function()
var delete_mark = function()
{
$( "<div />" )
.attr( "id", "delete_confirmation" )
.text( "Do you really want to delete this latent?" )
.text( "Do you really want to delete this mark?" )
.dialog( {
title: "Confirm latent deletion",
title: "Confirm mark deletion",
modal: true,
buttons: {
"OK": function()
{
$.ajax( {
url: "{{ url_for( 'submission_latent_delete', submission_id = submission_id, latent_id = file[ 'uuid' ] ) }}",
url: "{{ url_for( 'submission_mark_delete', submission_id = submission_id, mark_id = file[ 'uuid' ] ) }}",
dataType: "json",
success: function( data )
{
$( "#delete_confirmation" ).remove();
window.location = "{{ url_for( 'submission_latent_list', submission_id = submission_id, latent_type = file[ 'file_type' ] ) }}";
window.location = "{{ url_for( 'submission_mark_list', submission_id = submission_id, mark_type = file[ 'file_type' ] ) }}";
},
error: function( data )
{
......@@ -143,7 +143,7 @@
</div>
<div id="delete_button_div">
<a class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only" id="delete_button">
<span class="ui-button-text" id="delete_button_span_text">Delete latent</span>
<span class="ui-button-text" id="delete_button_span_text">Delete mark</span>
</a>
</div>
</div>
......@@ -164,7 +164,7 @@
.text( moment.utc( "{{ file[ 'creation_time' ] }}" ).local().format( "MMMM Do YYYY, HH:mm:ss" ) );
$( "#next_button" ).on( "click", next_information );
$( "#delete_button" ).on( "click", delete_latent );
$( "#delete_button" ).on( "click", delete_mark );
$( "#icnml_navigation_updatedonor" )
.addClass( "activated" );
......@@ -187,8 +187,8 @@
)
.append(
$( "<a />" )
.attr( "href", "{{ url_for( 'submission_latent_list', submission_id = submission_id ) }}" )
.text( "Latents" )
.attr( "href", "{{ url_for( 'submission_mark_list', submission_id = submission_id ) }}" )
.text( "Marks" )
)
.append(
$( "<span />" ).text( ">" )
......
......@@ -16,25 +16,25 @@
var password_local = decrypt( sessionStorage.getItem( "session_key" ), "{{ session_security_key }}" );
var nickname = decrypt( "{{ nickname }}", password_local );
var latents_list = new Array();
var marks_list = new Array();
{% for file in files %}
latents_list.push( "{{ file[ 'uuid' ] }}" );
marks_list.push( "{{ file[ 'uuid' ] }}" );
{% endfor %}
update_search_result = function()
{
var searched = $( "#search_bar" ).val();
for( var i = 0; i < latents_list.length; i++ )
for( var i = 0; i < marks_list.length; i++ )
{
var uuid = latents_list[ i ];
var filename = $( "#latent_" + uuid + "_filename" ).text();
var uuid = marks_list[ i ];
var filename = $( "#mark_" + uuid + "_filename" ).text();
if( filename.indexOf( searched ) >= 0 )
{
$( "#latent_" + uuid ).show();
$( "#mark_" + uuid ).show();
} else {
$( "#latent_" + uuid ).hide();
$( "#mark_" + uuid ).hide();
}
}
}
......@@ -81,11 +81,11 @@
<div class="icnml_lp_list">
{% for file in files %}
<div id="latent_{{ file[ 'uuid' ] }}">
<div class="ui-widget-header ui-corner-top icnml_box_top" id="latent_{{ file[ 'uuid' ] }}_filename">-</div>
<div id="mark_{{ file[ 'uuid' ] }}">
<div class="ui-widget-header ui-corner-top icnml_box_top" id="mark_{{ file[ 'uuid' ] }}_filename">-</div>
<div class="ui-widget-content ui-corner-bottom icnml_box_content">
<div class="icnml_img">
<a id="edit_{{ file[ 'id' ] }}" href="{{ url_for( 'submission_latent', submission_id = submission_id, latent_id = file[ 'uuid' ] ) }}">
<a id="edit_{{ file[ 'id' ] }}" href="{{ url_for( 'submission_mark', submission_id = submission_id, mark_id = file[ 'uuid' ] ) }}">
<img src="{{ url_for( 'image_file_serve', file_id = file[ 'uuid' ] ) }}">
</a>
</div>
......@@ -105,7 +105,7 @@
.addClass( "activated" );
{% for file in files %}
$( "#latent_{{ file[ 'uuid' ] }}_filename" )
$( "#mark_{{ file[ 'uuid' ] }}_filename" )
.text( decrypt( "{{ file[ 'filename' ] }}", password_local ) );
{% endfor %}
......@@ -127,14 +127,14 @@
)
.append(
$( "<a />" )
.attr( "href", "{{ url_for( 'submission_latent_list', submission_id = submission_id, latent_type = 'all' ) }}" )
.text( "Latents" )
.attr( "href", "{{ url_for( 'submission_mark_list', submission_id = submission_id, mark_type = 'all' ) }}" )
.text( "Marks" )
)
.append(
$( "<span />" ).text( ">" )
)
.append(
$( "<span />" ).text( "{{ latent_type }}" )
$( "<span />" ).text( "{{ mark_type }}" )
);
</script>
</body>
......
......@@ -80,7 +80,7 @@
var update_pfsp_db = function( data )
{
$.ajax( {
url: "{{ url_for( 'submission_latent_pfsp_set', submission_id = submission_id, latent_id = file[ 'uuid' ] ) }}",
url: "{{ url_for( 'submission_mark_pfsp_set', submission_id = submission_id, mark_id = file[ 'uuid' ] ) }}",
dataType: "json",
method: "POST",
data: {
......@@ -211,8 +211,8 @@
)
.append(
$( "<a />" )
.attr( "href", "{{ url_for( 'submission_latent_list', submission_id = submission_id ) }}" )
.text( "Latents" )
.attr( "href", "{{ url_for( 'submission_mark_list', submission_id = submission_id ) }}" )
.text( "Marks" )
)
.append(
$( "<span />" ).text( ">" )
......
......@@ -182,7 +182,7 @@
</p>
<p>
This imply that your data, in particular all biometric information (tenprint and latent marks) are not available as part of the ICNML data.
This imply that your data, in particular all biometric information (tenprint and marks) are not available as part of the ICNML data.
</p>
<p>
......