Compare commits

..

No commits in common. 'master' and 'v0.1.2' have entirely different histories.

@ -2,7 +2,12 @@
<project version="4"> <project version="4">
<component name="ChangeListManager"> <component name="ChangeListManager">
<list default="true" id="7e2ff7f2-75de-431f-9457-e0d648b65015" name="Default Changelist" comment=""> <list default="true" id="7e2ff7f2-75de-431f-9457-e0d648b65015" name="Default Changelist" comment="">
<change beforePath="$PROJECT_DIR$/notepostcli/notepost.py" beforeDir="false" afterPath="$PROJECT_DIR$/notepostcli/notepost.py" afterDir="false" /> <change beforePath="$PROJECT_DIR$/.idea/workspace.xml" beforeDir="false" afterPath="$PROJECT_DIR$/.idea/workspace.xml" afterDir="false" />
<change beforePath="$PROJECT_DIR$/README.md" beforeDir="false" afterPath="$PROJECT_DIR$/README.md" afterDir="false" />
<change beforePath="$PROJECT_DIR$/api.py" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/config.py" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/notepost.py" beforeDir="false" />
<change beforePath="$PROJECT_DIR$/termcolors.py" beforeDir="false" />
</list> </list>
<option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" /> <option name="EXCLUDED_CONVERTED_TO_IGNORED" value="true" />
<option name="SHOW_DIALOG" value="false" /> <option name="SHOW_DIALOG" value="false" />
@ -12,56 +17,11 @@
</component> </component>
<component name="FileEditorManager"> <component name="FileEditorManager">
<leaf SIDE_TABS_SIZE_LIMIT_KEY="300"> <leaf SIDE_TABS_SIZE_LIMIT_KEY="300">
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/setup.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210">
<caret line="14" column="27" selection-start-line="14" selection-start-column="27" selection-end-line="14" selection-end-column="27" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="true"> <file pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/notepostcli/notepost.py"> <entry file="file://$PROJECT_DIR$/setup.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180">
<caret line="115" column="33" selection-start-line="115" selection-start-column="33" selection-end-line="115" selection-end-column="33" />
<folding>
<element signature="e#224#234#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/notepostcli/termcolors.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="465">
<caret line="31" column="9" lean-forward="true" selection-start-line="31" selection-start-column="9" selection-end-line="31" selection-end-column="9" />
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/notepostcli/api.py">
<provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345">
<caret line="23" column="19" lean-forward="true" selection-start-line="23" selection-start-column="19" selection-end-line="23" selection-end-column="19" />
<folding>
<element signature="e#224#239#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/notepostcli/config.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270"> <state relative-caret-position="375">
<caret line="18" lean-forward="true" selection-start-line="18" selection-end-line="18" /> <caret line="26" selection-start-line="26" selection-end-line="26" />
<folding>
<element signature="e#224#235#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
@ -76,12 +36,6 @@
</list> </list>
</option> </option>
</component> </component>
<component name="FindInProjectRecents">
<findStrings>
<find>i18n</find>
<find>valid</find>
</findStrings>
</component>
<component name="Git.Settings"> <component name="Git.Settings">
<option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" /> <option name="RECENT_GIT_ROOT_PATH" value="$PROJECT_DIR$" />
</component> </component>
@ -93,12 +47,10 @@
<option value="$PROJECT_DIR$/api.py" /> <option value="$PROJECT_DIR$/api.py" />
<option value="$PROJECT_DIR$/termcolors.py" /> <option value="$PROJECT_DIR$/termcolors.py" />
<option value="$PROJECT_DIR$/notepost.py" /> <option value="$PROJECT_DIR$/notepost.py" />
<option value="$PROJECT_DIR$/notepostcli/api.py" />
<option value="$PROJECT_DIR$/notepostcli/notepost.py" />
</list> </list>
</option> </option>
</component> </component>
<component name="ProjectFrameBounds" extendedState="6"> <component name="ProjectFrameBounds">
<option name="x" value="4" /> <option name="x" value="4" />
<option name="width" value="1912" /> <option name="width" value="1912" />
<option name="height" value="1038" /> <option name="height" value="1038" />
@ -109,6 +61,7 @@
<foldersAlwaysOnTop value="true" /> <foldersAlwaysOnTop value="true" />
</navigator> </navigator>
<panes> <panes>
<pane id="Scope" />
<pane id="ProjectPane"> <pane id="ProjectPane">
<subPane> <subPane>
<expand> <expand>
@ -116,16 +69,6 @@
<item name="NotePostCLI" type="b2602c69:ProjectViewProjectNode" /> <item name="NotePostCLI" type="b2602c69:ProjectViewProjectNode" />
<item name="NotePostCLI" type="462c0819:PsiDirectoryNode" /> <item name="NotePostCLI" type="462c0819:PsiDirectoryNode" />
</path> </path>
<path>
<item name="NotePostCLI" type="b2602c69:ProjectViewProjectNode" />
<item name="NotePostCLI" type="462c0819:PsiDirectoryNode" />
<item name="notepostcli" type="462c0819:PsiDirectoryNode" />
</path>
<path>
<item name="NotePostCLI" type="b2602c69:ProjectViewProjectNode" />
<item name="NotePostCLI" type="462c0819:PsiDirectoryNode" />
<item name="share" type="462c0819:PsiDirectoryNode" />
</path>
<path> <path>
<item name="NotePostCLI" type="b2602c69:ProjectViewProjectNode" /> <item name="NotePostCLI" type="b2602c69:ProjectViewProjectNode" />
<item name="External Libraries" type="cb654da1:ExternalLibrariesNode" /> <item name="External Libraries" type="cb654da1:ExternalLibrariesNode" />
@ -134,11 +77,9 @@
<select /> <select />
</subPane> </subPane>
</pane> </pane>
<pane id="Scope" />
</panes> </panes>
</component> </component>
<component name="PropertiesComponent"> <component name="PropertiesComponent">
<property name="last_opened_file_path" value="$PROJECT_DIR$/bin" />
<property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" /> <property name="settings.editor.selected.configurable" value="com.jetbrains.python.configuration.PyActiveSdkModuleConfigurable" />
</component> </component>
<component name="RunDashboard"> <component name="RunDashboard">
@ -195,9 +136,9 @@
<servers /> <servers />
</component> </component>
<component name="ToolWindowManager"> <component name="ToolWindowManager">
<frame x="-4" y="0" width="1928" height="1046" extended-state="6" /> <frame x="4" y="0" width="1912" height="1038" extended-state="0" />
<layout> <layout>
<window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.17923036" /> <window_info active="true" content_ui="combo" id="Project" order="0" visible="true" weight="0.18075491" />
<window_info id="Structure" order="1" side_tool="true" weight="0.25" /> <window_info id="Structure" order="1" side_tool="true" weight="0.25" />
<window_info id="Favorites" order="2" side_tool="true" /> <window_info id="Favorites" order="2" side_tool="true" />
<window_info anchor="bottom" id="Message" order="0" /> <window_info anchor="bottom" id="Message" order="0" />
@ -226,51 +167,44 @@
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/note.class.py" /> <entry file="file://$PROJECT_DIR$/note.class.py" />
<entry file="file://$PROJECT_DIR$/notepost.py" /> <entry file="file://$PROJECT_DIR$/notepost.py">
<entry file="file://$PROJECT_DIR$/termcolors.py" />
<entry file="file://$PROJECT_DIR$/api.py" />
<entry file="file://$PROJECT_DIR$/config.py" />
<entry file="file://$PROJECT_DIR$/setup.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="210"> <state relative-caret-position="2640">
<caret line="14" column="27" selection-start-line="14" selection-start-column="27" selection-end-line="14" selection-end-column="27" /> <caret line="183" column="18" lean-forward="true" selection-start-line="183" selection-start-column="18" selection-end-line="183" selection-end-column="18" />
<folding>
<element signature="e#24#39#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/notepostcli/api.py"> <entry file="file://$PROJECT_DIR$/termcolors.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="345"> <state relative-caret-position="285">
<caret line="23" column="19" lean-forward="true" selection-start-line="23" selection-start-column="19" selection-end-line="23" selection-end-column="19" /> <caret line="19" column="22" selection-start-line="19" selection-start-column="22" selection-end-line="19" selection-end-column="22" />
<folding>
<element signature="e#224#239#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/notepostcli/config.py"> <entry file="file://$PROJECT_DIR$/api.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="270"> <state relative-caret-position="120">
<caret line="18" lean-forward="true" selection-start-line="18" selection-end-line="18" /> <caret line="11" column="56" selection-start-line="11" selection-start-column="56" selection-end-line="11" selection-end-column="56" />
<folding> <folding>
<element signature="e#224#235#0" expanded="true" /> <element signature="e#24#35#0" expanded="true" />
</folding> </folding>
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/notepostcli/termcolors.py"> <entry file="file://$PROJECT_DIR$/config.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="465"> <state relative-caret-position="60">
<caret line="31" column="9" lean-forward="true" selection-start-line="31" selection-start-column="9" selection-end-line="31" selection-end-column="9" /> <caret line="4" column="9" selection-start-line="4" selection-start-column="9" selection-end-line="4" selection-end-column="9" />
</state> </state>
</provider> </provider>
</entry> </entry>
<entry file="file://$PROJECT_DIR$/notepostcli/notepost.py"> <entry file="file://$PROJECT_DIR$/setup.py">
<provider selected="true" editor-type-id="text-editor"> <provider selected="true" editor-type-id="text-editor">
<state relative-caret-position="180"> <state relative-caret-position="375">
<caret line="115" column="33" selection-start-line="115" selection-start-column="33" selection-end-line="115" selection-end-column="33" /> <caret line="26" selection-start-line="26" selection-end-line="26" />
<folding>
<element signature="e#224#234#0" expanded="true" />
</folding>
</state> </state>
</provider> </provider>
</entry> </entry>

@ -4,6 +4,7 @@
# License, v. 2.0. If a copy of the MPL was not distributed with this # License, v. 2.0. If a copy of the MPL was not distributed with this
# file, You can obtain one at http://mozilla.org/MPL/2.0/. # file, You can obtain one at http://mozilla.org/MPL/2.0/.
import i18n
import requests import requests
from config import getconfig from config import getconfig
@ -14,7 +15,7 @@ def do(action, data={}):
try: try:
r = requests.post(conf["url"] + "/api/" + action, data=data, auth=(conf["username"], conf["password"])) r = requests.post(conf["url"] + "/api/" + action, data=data, auth=(conf["username"], conf["password"]))
except: except:
print("Could not connect to the server. Try again.") print(i18n.t("Could not connect to the server. Try again."))
return return
try: try:
@ -23,4 +24,4 @@ def do(action, data={}):
raise Exception(resp["msg"]) raise Exception(resp["msg"])
return resp return resp
except ValueError: except ValueError:
raise Exception("Invalid response from server.") raise Exception(i18n.t("Invalid response from server."))

@ -12,8 +12,9 @@ except:
pass pass
import tempfile import tempfile
import i18n
import validators
import requests import requests
import re
import api import api
from config import * from config import *
from termcolors import * from termcolors import *
@ -29,36 +30,36 @@ def firstsetup(url="", username=""):
# Get URL # Get URL
while True: while True:
if url != "": if url != "":
url = input("Server URL (" + url + "): ") or url url = input(i18n.t("Server URL") + " (" + url + "): ") or url
else: else:
url = input("Server URL: ") url = input(i18n.t("Server URL") + ": ")
if re.compile("^(https?|ftp)://[^\s/$.?#].[^\s]*$").match(url): if validators.url(url):
break break
else: else:
print("That doesn't look right, try again.") print(i18n.t("That doesn't look right, try again."))
# Get username # Get username
while True: while True:
if username != "": if username != "":
username = input("Username (" + username + "): ") or username username = input(i18n.t("Username") + " (" + username + "): ") or username
else: else:
username = input("Username: ") username = input(i18n.t("Username") + ": ")
if username != "": if username != "":
break break
# Get password # Get password
while True: while True:
password = getpass("Password: ") password = getpass(i18n.t("Password") + ": ")
if password != "": if password != "":
break break
try: try:
r = requests.post(url + "/api/ping", auth=(username, password)) r = requests.post(url + "/api/ping", auth=(username, password))
except: except:
print("Could not connect to the server. Try again.") print(i18n.t("Could not connect to the server. Try again."))
firstsetup() firstsetup()
return return
if r.status_code == 401: if r.status_code == 401:
print("Login incorrect, try again.") print(i18n.t("Login incorrect, try again."))
firstsetup(url) firstsetup(url)
return return
@ -74,7 +75,7 @@ def firstsetup(url="", username=""):
saveconfig() saveconfig()
return return
except ValueError: except ValueError:
print("Login incorrect, try again.") print(i18n.t("Login incorrect, try again."))
firstsetup(url, username) firstsetup(url, username)
return return
@ -105,15 +106,13 @@ def editnote(note):
assert not os.path.exists(f.name) assert not os.path.exists(f.name)
note["content"] = text note["content"] = text
clearscreen() clearscreen()
print("Saving...") print(i18n.t("Saving..."))
savenote(note) savenote(note)
print("Note saved!") print(i18n.t("Note saved!"))
def editmenu(): def editmenu():
global notes global notes
rows, columns = os.popen('stty size', 'r').read().split()
linelength = int(columns) - 5
clearscreen() clearscreen()
loadnotes() loadnotes()
i = 1 i = 1
@ -129,23 +128,21 @@ def editmenu():
if linecount > 5: if linecount > 5:
print("\n(" + str(len(note["content"].splitlines())) + " more lines" + ")", end='') print("\n(" + str(len(note["content"].splitlines())) + " more lines" + ")", end='')
break break
print("\n " + line[0:linelength].ljust(linelength), end='') print("\n " + line[0:70].ljust(70), end='')
if len(line) > linelength: if len(line) > 70:
print("...", end='') print("...", end='')
else:
print(" ", end='')
linecount += 1 linecount += 1
i += 1 i += 1
resetcolor() resetcolor()
print("\n======================") print("\n======================")
noteid = input("Note to edit (M for main menu): ") noteid = input(i18n.t("Note to edit (M for main menu): "))
if noteid.upper() == "M": if noteid.upper() == "M":
clearscreen() clearscreen()
return return
try: try:
editnote(notelist[noteid]) editnote(notelist[noteid])
except KeyError: except KeyError:
print("Invalid selection.") print(i18n.t("Invalid selection."))
def newnote(): def newnote():
@ -162,23 +159,23 @@ def newnote():
assert not os.path.exists(f.name) assert not os.path.exists(f.name)
if text == "": if text == "":
clearscreen() clearscreen()
print("Nothing to do.") print(i18n.t("Nothing to do."))
return return
print("Saving...") print(i18n.t("Saving..."))
api.do("savenote", { api.do("savenote", {
"text": text "text": text
}) })
print("Note created!") print(i18n.t("Note created!"))
def mainmenu(): def mainmenu():
print("\n======================") print("\n======================")
print("Main Menu") print(i18n.t("Main Menu"))
print("======================") print("======================")
print("E. View and edit notes") print("E. " + i18n.t("View and edit notes"))
print("C. Create a new note") print("C. " + i18n.t("Create a new note"))
print("Q. Exit") print("Q. " + i18n.t("Exit"))
option = input("Choose an option: ").upper() option = input(i18n.t("Choose an option: ")).upper()
clearscreen() clearscreen()
if option == "E": if option == "E":
editmenu() editmenu()
@ -187,13 +184,13 @@ def mainmenu():
elif option == "Q": elif option == "Q":
exit(0) exit(0)
else: else:
print("Unrecognized selection, try again.") print(i18n.t("Unrecognized selection, try again."))
def main(): def main():
print("NotePostCLI v0.1") print("NotePostCLI v0.1")
if not checkconfig(): if not checkconfig():
print("No valid settings file found, running setup wizard.") print(i18n.t("No valid settings file found, running setup wizard."))
firstsetup() firstsetup()
else: else:
loadconfig() loadconfig()

@ -4,7 +4,7 @@
from setuptools import setup, find_packages from setuptools import setup, find_packages
setup( setup(
name="NotePostCLI", name="NotePostCLI",
version="0.1.3", version="0.1.2",
packages=find_packages(), packages=find_packages(),
install_requires=[ install_requires=[
"appdirs>=1.4.3", "appdirs>=1.4.3",
@ -12,9 +12,11 @@ setup(
"chardet>=3.0", "chardet>=3.0",
"decorator>=4.1", "decorator>=4.1",
"idna>=2.6", "idna>=2.6",
"python-i18n==0.3.5",
"requests>=2.18.0", "requests>=2.18.0",
"six>=1.10.0", "six>=1.11.0",
"urllib3>=1.22" "urllib3>=1.22",
"validators==0.12.3"
], ],
entry_points = { entry_points = {
'console_scripts' : ['notepostcli = notepostcli.notepost:main'] 'console_scripts' : ['notepostcli = notepostcli.notepost:main']

Loading…
Cancel
Save