list<KDMWithMetadataPtr> kdms,
boost::filesystem::path directory,
dcp::NameFormat name_format,
- dcp::NameFormat::Map name_values,
boost::function<bool (boost::filesystem::path)> confirm_overwrite
)
{
/* Write KDMs to the specified directory */
BOOST_FOREACH (KDMWithMetadataPtr i, kdms) {
- boost::filesystem::path out = directory / careful_string_filter(name_format.get(name_values, ".xml"));
+ boost::filesystem::path out = directory / careful_string_filter(name_format.get(i->name_values(), ".xml"));
if (!boost::filesystem::exists (out) || confirm_overwrite (out)) {
i->kdm_as_xml (out);
++written;
void
-make_zip_file (list<KDMWithMetadataPtr> kdms, boost::filesystem::path zip_file, dcp::NameFormat name_format, dcp::NameFormat::Map name_values)
+make_zip_file (list<KDMWithMetadataPtr> kdms, boost::filesystem::path zip_file, dcp::NameFormat name_format)
{
Zipper zipper (zip_file);
BOOST_FOREACH (KDMWithMetadataPtr i, kdms) {
- string const name = careful_string_filter(name_format.get(name_values, ".xml"));
+ string const name = careful_string_filter(name_format.get(i->name_values(), ".xml"));
zipper.add (name, i->kdm_as_xml());
}
boost::filesystem::path directory,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map name_values,
function<bool (boost::filesystem::path)> confirm_overwrite
)
{
- /* No specific screen */
- name_values['s'] = "";
-
int written = 0;
BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, cinema_kdms) {
boost::filesystem::path path = directory;
- path /= container_name_format.get(name_values, "");
+ path /= container_name_format.get(i.front()->name_values(), "");
if (!boost::filesystem::exists (path) || confirm_overwrite (path)) {
boost::filesystem::create_directories (path);
- write_files (i, path, filename_format, name_values, confirm_overwrite);
+ write_files (i, path, filename_format, confirm_overwrite);
}
written += i.size();
}
boost::filesystem::path directory,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map name_values,
function<bool (boost::filesystem::path)> confirm_overwrite
)
{
- /* No specific screen */
- name_values['s'] = "";
-
int written = 0;
BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, cinema_kdms) {
boost::filesystem::path path = directory;
- path /= container_name_format.get(name_values, ".zip");
+ path /= container_name_format.get(i.front()->name_values(), ".zip");
if (!boost::filesystem::exists (path) || confirm_overwrite (path)) {
if (boost::filesystem::exists (path)) {
/* Creating a new zip file over an existing one is an error */
boost::filesystem::remove (path);
}
- make_zip_file (i, path, filename_format, name_values);
+ make_zip_file (i, path, filename_format);
written += i.size();
}
}
list<list<KDMWithMetadataPtr> > cinema_kdms,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map name_values,
string cpl_name
)
{
throw NetworkError (_("No mail server configured in preferences"));
}
- /* No specific screen */
- name_values['s'] = "";
-
BOOST_FOREACH (list<KDMWithMetadataPtr> const & i, cinema_kdms) {
if (i.front()->cinema()->emails.empty()) {
boost::filesystem::path zip_file = boost::filesystem::temp_directory_path() / boost::filesystem::unique_path();
boost::filesystem::create_directories (zip_file);
- zip_file /= container_name_format.get(name_values, ".zip");
- make_zip_file (i, zip_file, filename_format, name_values);
+ zip_file /= container_name_format.get(i.front()->name_values(), ".zip");
+ make_zip_file (i, zip_file, filename_format);
string subject = config->kdm_subject();
boost::algorithm::replace_all (subject, "$CPL_NAME", cpl_name);
- boost::algorithm::replace_all (subject, "$START_TIME", name_values['b']);
- boost::algorithm::replace_all (subject, "$END_TIME", name_values['e']);
+ boost::algorithm::replace_all (subject, "$START_TIME", i.front()->get('b').get_value_or(""));
+ boost::algorithm::replace_all (subject, "$END_TIME", i.front()->get('e').get_value_or(""));
boost::algorithm::replace_all (subject, "$CINEMA_NAME", i.front()->cinema()->name);
string body = config->kdm_email().c_str();
boost::algorithm::replace_all (body, "$CPL_NAME", cpl_name);
- boost::algorithm::replace_all (body, "$START_TIME", name_values['b']);
- boost::algorithm::replace_all (body, "$END_TIME", name_values['e']);
+ boost::algorithm::replace_all (body, "$START_TIME", i.front()->get('b').get_value_or(""));
+ boost::algorithm::replace_all (body, "$END_TIME", i.front()->get('e').get_value_or(""));
boost::algorithm::replace_all (body, "$CINEMA_NAME", i.front()->cinema()->name);
string screens;
email.add_bcc (config->kdm_bcc ());
}
- email.add_attachment (zip_file, container_name_format.get(name_values, ".zip"), "application/zip");
+ email.add_attachment (zip_file, container_name_format.get(i.front()->name_values(), ".zip"), "application/zip");
Config* c = Config::instance ();
int write_files (
std::list<KDMWithMetadataPtr> screen_kdms, boost::filesystem::path directory,
- dcp::NameFormat name_format, dcp::NameFormat::Map name_values,
- boost::function<bool (boost::filesystem::path)> confirm_overwrite
+ dcp::NameFormat name_format, boost::function<bool (boost::filesystem::path)> confirm_overwrite
);
-void make_zip_file (std::list<KDMWithMetadataPtr> kdms, boost::filesystem::path zip_file, dcp::NameFormat name_format, dcp::NameFormat::Map name_values);
+void make_zip_file (std::list<KDMWithMetadataPtr> kdms, boost::filesystem::path zip_file, dcp::NameFormat name_format);
std::list<std::list<KDMWithMetadataPtr> > collect (std::list<KDMWithMetadataPtr> kdms);
boost::filesystem::path directory,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map name_values,
boost::function<bool (boost::filesystem::path)> confirm_overwrite
);
boost::filesystem::path directory,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map name_values,
boost::function<bool (boost::filesystem::path)> confirm_overwrite
);
std::list<std::list<KDMWithMetadataPtr> > cinema_kdms,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map name_values,
std::string cpl_name
);
/*
- Copyright (C) 2013 Carl Hetherington <cth@carlh.net>
+ Copyright (C) 2013-2020 Carl Hetherington <cth@carlh.net>
This file is part of DCP-o-matic.
using std::string;
using std::list;
using boost::shared_ptr;
+using boost::optional;
-/** @param cinema_kdms KDMs to email.
+/** @param kdms KDMs to email.
* @param container_name_format Format to ues for folders / ZIP files.
* @param filename_format Format to use for filenames.
* @param name_values Values to substitute into \p container_name_format and \p filename_format.
* @param cpl_name Name of the CPL that the KDMs are for.
*/
SendKDMEmailJob::SendKDMEmailJob (
- list<list<KDMWithMetadataPtr> > cinema_kdms,
+ list<list<KDMWithMetadataPtr> > kdms,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map name_values,
string cpl_name
)
: Job (shared_ptr<Film>())
, _container_name_format (container_name_format)
, _filename_format (filename_format)
- , _name_values (name_values)
, _cpl_name (cpl_name)
- , _cinema_kdms (cinema_kdms)
+ , _kdms (kdms)
{
}
string
SendKDMEmailJob::name () const
{
- dcp::NameFormat::Map::const_iterator i = _name_values.find ('f');
- if (i == _name_values.end() || i->second.empty ()) {
+ optional<string> f = _kdms.front().front()->get('f');
+ if (!f || f->empty()) {
return _("Email KDMs");
}
- return String::compose (_("Email KDMs for %1"), i->second);
+ return String::compose (_("Email KDMs for %2"), *f);
}
string
SendKDMEmailJob::run ()
{
set_progress_unknown ();
- email (_cinema_kdms, _container_name_format, _filename_format, _name_values, _cpl_name);
+ email (_kdms, _container_name_format, _filename_format, _cpl_name);
set_progress (1);
set_state (FINISHED_OK);
}
boost::filesystem::path output,
dcp::NameFormat container_name_format,
dcp::NameFormat filename_format,
- dcp::NameFormat::Map values,
bool verbose
)
{
output,
container_name_format,
filename_format,
- values,
bind (&always_overwrite)
);
}
} else {
int const N = write_files (
- kdms, output, filename_format, values,
+ kdms, output, filename_format,
bind (&always_overwrite)
);
}
}
- write_files (kdms, zip, output, container_name_format, filename_format, values, verbose);
+ write_files (kdms, zip, output, container_name_format, filename_format, verbose);
} catch (FileError& e) {
cerr << program_name << ": " << e.what() << " (" << e.file().string() << ")\n";
exit (EXIT_FAILURE);
kdms.push_back (KDMWithMetadataPtr(new DCPKDMWithMetadata(name_values, i->cinema, kdm)));
}
- write_files (kdms, zip, output, container_name_format, filename_format, values, verbose);
+ write_files (kdms, zip, output, container_name_format, filename_format, verbose);
} catch (FileError& e) {
cerr << program_name << ": " << e.what() << " (" << e.file().string() << ")\n";
exit (EXIT_FAILURE);