Add hours as time frame for newsletters

This commit is contained in:
JonnyWong16 2018-04-10 21:16:16 -07:00
parent d316aa34e2
commit df72ecebf5
5 changed files with 43 additions and 14 deletions

View file

@ -4046,6 +4046,19 @@ a:hover .overlay-refresh-image:hover {
-webkit-appearance: none; -webkit-appearance: none;
margin: 0; margin: 0;
} }
.newsletter-time_frame .input-group-addon {
height: 32px;
width: 52px;
margin-top: 5px;
line-height: 1.42857143;
}
.newsletter-time_frame input.form-control {
width: calc(50% - 37px);
}
.newsletter-time_frame select.form-control {
width: calc(50% - 15px);
height: 32px;
}
.newsletter-loader-container { .newsletter-loader-container {
font-family: 'Open Sans', Arial, sans-serif; font-family: 'Open Sans', Arial, sans-serif;
position: absolute; position: absolute;

View file

@ -57,6 +57,22 @@
<div class="col-md-12" style="padding-top: 10px; border-top: 1px solid #444;"> <div class="col-md-12" style="padding-top: 10px; border-top: 1px solid #444;">
<input type="hidden" id="newsletter_id" name="newsletter_id" value="${newsletter['id']}" /> <input type="hidden" id="newsletter_id" name="newsletter_id" value="${newsletter['id']}" />
<input type="hidden" id="agent_id" name="agent_id" value="${newsletter['agent_id']}" /> <input type="hidden" id="agent_id" name="agent_id" value="${newsletter['agent_id']}" />
<div class="form-group">
<label for="time_frame">Time Frame</label>
<div class="row">
<div class="col-md-4">
<div class="input-group newsletter-time_frame">
<span class="input-group-addon form-control btn-dark inactive">Last</span>
<input type="number" class="form-control" id="newsletter_config_time_frame" name="newsletter_config_time_frame" value="${newsletter['config']['time_frame']}">
<select class="form-control" id="newsletter_config_time_frame_units" name="newsletter_config_time_frame_units">
<option value="days" ${'selected' if newsletter['config']['time_frame_units'] == 'days' else ''}>days</option>
<option value="hours" ${'selected' if newsletter['config']['time_frame_units'] == 'hours' else ''}>hours</option>
</select>
</div>
</div>
</div>
<p class="help-block">The time frame to include in the newsletter. Note: Days uses calendar days (i.e. since midnight).</p>
</div>
% for item in newsletter['config_options']: % for item in newsletter['config_options']:
% if item['input_type'] == 'help': % if item['input_type'] == 'help':
<div class="form-group"> <div class="form-group">

View file

@ -522,7 +522,8 @@ NEWSLETTER_PARAMETERS = [
{'name': 'Start Date', 'type': 'str', 'value': 'start_date', 'description': 'The start date of the newesletter.'}, {'name': 'Start Date', 'type': 'str', 'value': 'start_date', 'description': 'The start date of the newesletter.'},
{'name': 'End Date', 'type': 'str', 'value': 'end_date', 'description': 'The end date of the newesletter.'}, {'name': 'End Date', 'type': 'str', 'value': 'end_date', 'description': 'The end date of the newesletter.'},
{'name': 'Week Number', 'type': 'int', 'value': 'week_number', 'description': 'The week number of the newsletter.'}, {'name': 'Week Number', 'type': 'int', 'value': 'week_number', 'description': 'The week number of the newsletter.'},
{'name': 'Newsletter Days', 'type': 'int', 'value': 'newsletter_days', 'description': 'The past number of days included in the newsletter.'}, {'name': 'Newsletter Time Frame', 'type': 'int', 'value': 'newsletter_time_frame', 'description': 'The time frame included in the newsletter.'},
{'name': 'Newsletter Time Frame Units', 'type': 'str', 'value': 'newsletter_time_frame_units', 'description': 'The time frame units included in the newsletter.'},
{'name': 'Newsletter URL', 'type': 'str', 'value': 'newsletter_url', 'description': 'The self-hosted URL to the newsletter.'}, {'name': 'Newsletter URL', 'type': 'str', 'value': 'newsletter_url', 'description': 'The self-hosted URL to the newsletter.'},
{'name': 'Newsletter UUID', 'type': 'str', 'value': 'newsletter_uuid', 'description': 'The unique identifier for the newsletter.'}, {'name': 'Newsletter UUID', 'type': 'str', 'value': 'newsletter_uuid', 'description': 'The unique identifier for the newsletter.'},
] ]

View file

@ -296,7 +296,8 @@ def generate_newsletter_uuid():
class Newsletter(object): class Newsletter(object):
NAME = '' NAME = ''
_DEFAULT_CONFIG = {'custom_cron': 0, _DEFAULT_CONFIG = {'custom_cron': 0,
'last_days': 7, 'time_frame': 7,
'time_frame_units': 'days',
'formatted': 1, 'formatted': 1,
'notifier_id': 0} 'notifier_id': 0}
_DEFAULT_EMAIL_CONFIG = EMAIL().return_default_config() _DEFAULT_EMAIL_CONFIG = EMAIL().return_default_config()
@ -324,7 +325,7 @@ class Newsletter(object):
pass pass
if self.end_date is None: if self.end_date is None:
self.end_date = arrow.now().ceil('day') self.end_date = arrow.now()
if start_date: if start_date:
try: try:
@ -333,7 +334,10 @@ class Newsletter(object):
pass pass
if self.start_date is None: if self.start_date is None:
self.start_date = self.end_date.shift(days=-self.config['last_days']+1).floor('day') if self.config['time_frame_units'] == 'days':
self.start_date = self.end_date.shift(days=-self.config['time_frame']+1).floor('day')
else:
self.start_date = self.end_date.shift(hours=-self.config['time_frame']).floor('hour')
self.end_time = self.end_date.timestamp self.end_time = self.end_date.timestamp
self.start_time = self.start_date.timestamp self.start_time = self.start_date.timestamp
@ -478,7 +482,8 @@ class Newsletter(object):
'start_date': self.start_date.format(date_format), 'start_date': self.start_date.format(date_format),
'end_date': self.end_date.format(date_format), 'end_date': self.end_date.format(date_format),
'week_number': self.start_date.isocalendar()[1], 'week_number': self.start_date.isocalendar()[1],
'newsletter_days': self.config['last_days'], 'newsletter_time_frame': self.config['time_frame'],
'newsletter_time_frame_units': self.config['time_frame_units'],
'newsletter_url': base_url.rstrip('/') + plexpy.HTTP_ROOT + 'newsletter/' + self.uuid, 'newsletter_url': base_url.rstrip('/') + plexpy.HTTP_ROOT + 'newsletter/' + self.uuid,
'newsletter_uuid': self.uuid 'newsletter_uuid': self.uuid
} }
@ -528,14 +533,7 @@ class Newsletter(object):
return self._return_config_options() return self._return_config_options()
def _return_config_options(self): def _return_config_options(self):
config_options = [ config_options = []
{'label': 'Number of Days',
'value': self.config['last_days'],
'name': 'newsletter_config_last_days',
'description': 'The past number of days to include in the newsletter.',
'input_type': 'number'
}
]
return config_options return config_options

View file

@ -5521,7 +5521,8 @@ class WebInterface(object):
"friendly_name": "", "friendly_name": "",
"cron": "0 0 * * 1", "cron": "0 0 * * 1",
"active": 1 "active": 1
"config": {"last_days": 7, "config": {"time_frame": 7,
"time_frame_units": "days",
"incl_libraries": [1, 2] "incl_libraries": [1, 2]
}, },
"email_config": {...}, "email_config": {...},