feat: implemented autosave for sections
Now the changes made to the code in each section will be autosaved and loaded back on next page load.
This commit is contained in:
23
community/lms/api.py
Normal file
23
community/lms/api.py
Normal file
@@ -0,0 +1,23 @@
|
||||
"""API methods for the LMS.
|
||||
"""
|
||||
|
||||
import frappe
|
||||
|
||||
@frappe.whitelist()
|
||||
def autosave_section(section, code):
|
||||
"""Saves the code edited in one of the sections.
|
||||
"""
|
||||
doc = frappe.get_doc(
|
||||
doctype="Code Revision",
|
||||
section=section,
|
||||
code=code,
|
||||
author=frappe.session.user)
|
||||
doc.insert()
|
||||
return {"name": doc.name}
|
||||
|
||||
@frappe.whitelist()
|
||||
def get_section(name):
|
||||
"""Saves the code edited in one of the sections.
|
||||
"""
|
||||
doc = frappe.get_doc("LMS Section", name)
|
||||
return doc and doc.as_dict()
|
||||
@@ -3,9 +3,27 @@
|
||||
# For license information, please see license.txt
|
||||
|
||||
from __future__ import unicode_literals
|
||||
# import frappe
|
||||
import frappe
|
||||
from frappe.model.document import Document
|
||||
|
||||
class LMSSection(Document):
|
||||
def __repr__(self):
|
||||
return f"<LMSSection {self.label!r}>"
|
||||
|
||||
def get_latest_code_for_user(self):
|
||||
"""Returns the latest code for the logged in user.
|
||||
"""
|
||||
if not frappe.session.user or frappe.session.user == "Guest":
|
||||
return self.contents
|
||||
result = frappe.get_all('Code Revision',
|
||||
fields=["code"],
|
||||
filters={
|
||||
"author": frappe.session.user,
|
||||
"section": self.name
|
||||
},
|
||||
order_by="creation desc",
|
||||
page_length=1)
|
||||
if result:
|
||||
return result[0]['code']
|
||||
else:
|
||||
return self.contents
|
||||
|
||||
Reference in New Issue
Block a user