mirror of https://gitlab.com/bashrc2/epicyon
Merge branch 'main' of gitlab.com:bashrc2/epicyon
commit
79572aaa6c
14
daemon.py
14
daemon.py
|
@ -1080,6 +1080,7 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
# self.send_header('ETag', '"' + etag + '"')
|
# self.send_header('ETag', '"' + etag + '"')
|
||||||
if last_modified:
|
if last_modified:
|
||||||
self.send_header('last-modified', last_modified)
|
self.send_header('last-modified', last_modified)
|
||||||
|
self.send_header('accept-ranges', 'bytes')
|
||||||
self.end_headers()
|
self.end_headers()
|
||||||
|
|
||||||
def _etag_exists(self, media_filename: str) -> bool:
|
def _etag_exists(self, media_filename: str) -> bool:
|
||||||
|
@ -5063,8 +5064,17 @@ class PubServer(BaseHTTPRequestHandler):
|
||||||
if '&submitYes=' in remove_post_confirm_params:
|
if '&submitYes=' in remove_post_confirm_params:
|
||||||
remove_post_confirm_params = \
|
remove_post_confirm_params = \
|
||||||
urllib.parse.unquote_plus(remove_post_confirm_params)
|
urllib.parse.unquote_plus(remove_post_confirm_params)
|
||||||
remove_message_id = \
|
if 'messageId=' in remove_post_confirm_params:
|
||||||
remove_post_confirm_params.split('messageId=')[1]
|
remove_message_id = \
|
||||||
|
remove_post_confirm_params.split('messageId=')[1]
|
||||||
|
elif 'eventid=' in remove_post_confirm_params:
|
||||||
|
remove_message_id = \
|
||||||
|
remove_post_confirm_params.split('eventid=')[1]
|
||||||
|
else:
|
||||||
|
self.send_response(400)
|
||||||
|
self.end_headers()
|
||||||
|
self.server.postreq_busy = False
|
||||||
|
return
|
||||||
if '&' in remove_message_id:
|
if '&' in remove_message_id:
|
||||||
remove_message_id = remove_message_id.split('&')[0]
|
remove_message_id = remove_message_id.split('&')[0]
|
||||||
print('remove_message_id: ' + remove_message_id)
|
print('remove_message_id: ' + remove_message_id)
|
||||||
|
|
|
@ -172,13 +172,34 @@ a:focus {
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
direction: ltr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.calendar__day__event__rtl {
|
||||||
|
color: var(--event-color);
|
||||||
|
background-color: var(--event-background-private);
|
||||||
|
float: left;
|
||||||
|
font-size: 28px;
|
||||||
|
position: relative;
|
||||||
|
padding: 20px;
|
||||||
|
direction: rtl;
|
||||||
|
}
|
||||||
|
|
||||||
.calendar__day__event__public {
|
.calendar__day__event__public {
|
||||||
color: var(--event-public-color);
|
color: var(--event-public-color);
|
||||||
float: left;
|
float: left;
|
||||||
font-size: 28px;
|
font-size: 28px;
|
||||||
position: relative;
|
position: relative;
|
||||||
padding: 20px;
|
padding: 20px;
|
||||||
|
direction: ltr;
|
||||||
|
}
|
||||||
|
.calendar__day__event__public__rtl {
|
||||||
|
color: var(--event-public-color);
|
||||||
|
float: left;
|
||||||
|
font-size: 28px;
|
||||||
|
position: relative;
|
||||||
|
padding: 20px;
|
||||||
|
direction: rtl;
|
||||||
}
|
}
|
||||||
.place {
|
.place {
|
||||||
color: var(--place-color);
|
color: var(--place-color);
|
||||||
|
|
26
happening.py
26
happening.py
|
@ -273,6 +273,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str,
|
||||||
if not _is_happening_post(post_json_object):
|
if not _is_happening_post(post_json_object):
|
||||||
continue
|
continue
|
||||||
|
|
||||||
|
content_language = system_language
|
||||||
if post_json_object.get('object'):
|
if post_json_object.get('object'):
|
||||||
content = None
|
content = None
|
||||||
if post_json_object['object'].get('contentMap'):
|
if post_json_object['object'].get('contentMap'):
|
||||||
|
@ -280,6 +281,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str,
|
||||||
if post_json_object['object']['contentMap'].get(sys_lang):
|
if post_json_object['object']['contentMap'].get(sys_lang):
|
||||||
content = \
|
content = \
|
||||||
post_json_object['object']['contentMap'][sys_lang]
|
post_json_object['object']['contentMap'][sys_lang]
|
||||||
|
content_language = sys_lang
|
||||||
if not content:
|
if not content:
|
||||||
if post_json_object['object'].get('content'):
|
if post_json_object['object'].get('content'):
|
||||||
content = post_json_object['object']['content']
|
content = post_json_object['object']['content']
|
||||||
|
@ -314,6 +316,7 @@ def get_todays_events(base_dir: str, nickname: str, domain: str,
|
||||||
tag['sender'] = post_id.split('#statuses#')[0]
|
tag['sender'] = post_id.split('#statuses#')[0]
|
||||||
tag['sender'] = tag['sender'].replace('#', '/')
|
tag['sender'] = tag['sender'].replace('#', '/')
|
||||||
tag['public'] = public_event
|
tag['public'] = public_event
|
||||||
|
tag['language'] = content_language
|
||||||
post_event.append(tag)
|
post_event.append(tag)
|
||||||
else:
|
else:
|
||||||
# tag is a place
|
# tag is a place
|
||||||
|
@ -759,17 +762,26 @@ def remove_calendar_event(base_dir: str, nickname: str, domain: str,
|
||||||
if '/' in message_id:
|
if '/' in message_id:
|
||||||
message_id = message_id.replace('/', '#')
|
message_id = message_id.replace('/', '#')
|
||||||
if not text_in_file(message_id, calendar_filename):
|
if not text_in_file(message_id, calendar_filename):
|
||||||
|
message_id = message_id.replace('#', '/')
|
||||||
|
if not text_in_file(message_id, calendar_filename):
|
||||||
|
return
|
||||||
|
lines_str = ''
|
||||||
|
try:
|
||||||
|
with open(calendar_filename, 'r', encoding='utf-8') as fp_cal:
|
||||||
|
lines_str = fp_cal.read()
|
||||||
|
except OSError:
|
||||||
|
print('EX: unable to read calendar file ' +
|
||||||
|
calendar_filename)
|
||||||
|
if not lines_str:
|
||||||
return
|
return
|
||||||
lines = None
|
lines = lines_str.split('\n')
|
||||||
with open(calendar_filename, 'r', encoding='utf-8') as fp_cal:
|
print('Removing calendar event: ' + message_id)
|
||||||
lines = fp_cal.readlines()
|
|
||||||
if not lines:
|
|
||||||
return
|
|
||||||
try:
|
try:
|
||||||
with open(calendar_filename, 'w+', encoding='utf-8') as fp_cal:
|
with open(calendar_filename, 'w+', encoding='utf-8') as fp_cal:
|
||||||
for line in lines:
|
for line in lines:
|
||||||
if message_id not in line:
|
if message_id in line:
|
||||||
fp_cal.write(line)
|
continue
|
||||||
|
fp_cal.write(line + '\n')
|
||||||
except OSError:
|
except OSError:
|
||||||
print('EX: unable to remove calendar event ' +
|
print('EX: unable to remove calendar event ' +
|
||||||
calendar_filename)
|
calendar_filename)
|
||||||
|
|
|
@ -26,6 +26,7 @@ from happening import get_todays_events
|
||||||
from happening import get_calendar_events
|
from happening import get_calendar_events
|
||||||
from happening import get_todays_events_icalendar
|
from happening import get_todays_events_icalendar
|
||||||
from happening import get_month_events_icalendar
|
from happening import get_month_events_icalendar
|
||||||
|
from webapp_utils import language_right_to_left
|
||||||
from webapp_utils import get_banner_file
|
from webapp_utils import get_banner_file
|
||||||
from webapp_utils import set_custom_background
|
from webapp_utils import set_custom_background
|
||||||
from webapp_utils import html_header_with_external_style
|
from webapp_utils import html_header_with_external_style
|
||||||
|
@ -84,6 +85,9 @@ def html_calendar_delete_confirm(translate: {}, base_dir: str,
|
||||||
str(month_number) + '">\n'
|
str(month_number) + '">\n'
|
||||||
delete_post_str += ' <input type="hidden" name="day" value="' + \
|
delete_post_str += ' <input type="hidden" name="day" value="' + \
|
||||||
str(day_number) + '">\n'
|
str(day_number) + '">\n'
|
||||||
|
if post_time:
|
||||||
|
delete_post_str += ' <input type="hidden" name="time" value="' + \
|
||||||
|
post_time + '">\n'
|
||||||
delete_post_str += \
|
delete_post_str += \
|
||||||
' <input type="hidden" name="pageNumber" value="1">\n'
|
' <input type="hidden" name="pageNumber" value="1">\n'
|
||||||
delete_post_str += \
|
delete_post_str += \
|
||||||
|
@ -108,7 +112,8 @@ def _html_calendar_day(person_cache: {}, translate: {},
|
||||||
year: int, month_number: int, day_number: int,
|
year: int, month_number: int, day_number: int,
|
||||||
nickname: str, domain: str, day_events: [],
|
nickname: str, domain: str, day_events: [],
|
||||||
month_name: str, actor: str,
|
month_name: str, actor: str,
|
||||||
theme: str, access_keys: {}) -> str:
|
theme: str, access_keys: {},
|
||||||
|
system_language: str) -> str:
|
||||||
"""Show a day within the calendar
|
"""Show a day within the calendar
|
||||||
"""
|
"""
|
||||||
account_dir = acct_dir(base_dir, nickname, domain)
|
account_dir = acct_dir(base_dir, nickname, domain)
|
||||||
|
@ -170,6 +175,7 @@ def _html_calendar_day(person_cache: {}, translate: {},
|
||||||
start_time_str = ''
|
start_time_str = ''
|
||||||
end_time_str = ''
|
end_time_str = ''
|
||||||
event_description = None
|
event_description = None
|
||||||
|
event_language = system_language
|
||||||
event_place = None
|
event_place = None
|
||||||
post_id = None
|
post_id = None
|
||||||
sender_name = ''
|
sender_name = ''
|
||||||
|
@ -177,6 +183,10 @@ def _html_calendar_day(person_cache: {}, translate: {},
|
||||||
event_is_public = False
|
event_is_public = False
|
||||||
# get the time place and description
|
# get the time place and description
|
||||||
for evnt in event_post:
|
for evnt in event_post:
|
||||||
|
event_language = system_language
|
||||||
|
if evnt.get('language'):
|
||||||
|
event_language = evnt['language']
|
||||||
|
|
||||||
if evnt['type'] == 'Event':
|
if evnt['type'] == 'Event':
|
||||||
if evnt.get('post_id'):
|
if evnt.get('post_id'):
|
||||||
post_id = evnt['post_id']
|
post_id = evnt['post_id']
|
||||||
|
@ -250,10 +260,16 @@ def _html_calendar_day(person_cache: {}, translate: {},
|
||||||
translate['Delete this event'] + '" src="/' + \
|
translate['Delete this event'] + '" src="/' + \
|
||||||
'icons/delete.png" /></a></td>\n'
|
'icons/delete.png" /></a></td>\n'
|
||||||
|
|
||||||
|
is_rtl = language_right_to_left(event_language)
|
||||||
|
|
||||||
event_class = 'calendar__day__event'
|
event_class = 'calendar__day__event'
|
||||||
|
if is_rtl:
|
||||||
|
event_class = 'calendar__day__event__rtl'
|
||||||
cal_item_class = 'calItem'
|
cal_item_class = 'calItem'
|
||||||
if event_is_public:
|
if event_is_public:
|
||||||
event_class = 'calendar__day__event__public'
|
event_class = 'calendar__day__event__public'
|
||||||
|
if is_rtl:
|
||||||
|
event_class = 'calendar__day__event__public__rtl'
|
||||||
cal_item_class = 'calItemPublic'
|
cal_item_class = 'calItemPublic'
|
||||||
if event_time:
|
if event_time:
|
||||||
if event_end_time:
|
if event_end_time:
|
||||||
|
@ -401,7 +417,8 @@ def html_calendar(person_cache: {}, translate: {},
|
||||||
year, month_number, day_number,
|
year, month_number, day_number,
|
||||||
nickname, domain, day_events,
|
nickname, domain, day_events,
|
||||||
month_name, actor,
|
month_name, actor,
|
||||||
theme, access_keys)
|
theme, access_keys,
|
||||||
|
system_language)
|
||||||
|
|
||||||
if icalendar:
|
if icalendar:
|
||||||
return get_month_events_icalendar(base_dir, nickname, domain,
|
return get_month_events_icalendar(base_dir, nickname, domain,
|
||||||
|
|
Loading…
Reference in New Issue