# Path: screenchop/config.py
# HOST = config.get('app', 'HOST')
# PORT = int(config.get('app', 'PORT'))
# DEBUG = config.getboolean('app', 'DEBUG')
# TEMP_FILE_DIR = config.get('app', 'TEMP_FILE_DIR')
# SESSION_KEY = config.get('app', 'SESSION_KEY')
# DOMAIN_URL = config.get('app', 'DOMAIN_URL')
# SHORT_DOMAIN_URL = config.get('app', 'SHORT_DOMAIN_URL')
# ADMIN_EMAIL = config.get('app', 'ADMIN_EMAIL')
# EXCEPTION_EMAIL = config.get('app', 'EXCEPTION_EMAIL').split(',')
# CACHE_TYPE = config.get('caching', 'CACHE_TYPE')
# CACHE_SERVER_ADDRESS = config.get('caching', 'CACHE_SERVER_ADDRESS').split()
# CACHE_DEFAULT_TIMEOUT = config.getint('caching', 'CACHE_DEFAULT_TIMEOUT')
# MONGO_DATABASE = config.get('mongodb', 'DATABASE')
# MONGO_HOST = config.get('mongodb', 'HOST')
# MONGO_PORT = int(config.get('mongodb', 'PORT'))
# MONGO_USER = config.get('mongodb', 'USER')
# MONGO_PASS = config.get('mongodb', 'PASS')
# BUCKET_NAME = config.get('s3', 'BUCKET_NAME')
# AWS_ACCESS_KEY_ID = config.get('s3', 'AWS_ACCESS_KEY_ID')
# AWS_SECRET_ACCESS_KEY = config.get('s3', 'AWS_SECRET_ACCESS_KEY')
# S3_THUMBS_URL = config.get('s3', 'S3_THUMBS_URL')
# S3_MEDIUM_URL = config.get('s3', 'S3_MEDIUM_URL')
# S3_FULL_URL = config.get('s3', 'S3_FULL_URL')
# S3_AVATAR_URL = config.get('s3', 'S3_AVATAR_URL')
# REGISTRATION_LEVEL = config.get('registration', 'REGISTRATION_LEVEL')
# MAX_IMAGES_PER_ROW = int(config.get('gallery', 'MAX_IMAGES_PER_ROW'))
# HOME_MAX_IMAGES = int(config.get('gallery', 'HOME_MAX_IMAGES'))
# TAGGING_ENABLED = config.getboolean('gallery', 'TAGGING_ENABLED')
# ALLOWED_FILE_TYPES = config.get('upload', 'ALLOWED_FILE_TYPES').split(',')
# THUMB_MAX_WIDTH = int(config.get('upload', 'THUMB_MAX_WIDTH'))
# THUMB_MAX_HEIGHT = int(config.get('upload', 'THUMB_MAX_HEIGHT'))
# MEDIUM_MAX_WIDTH = int(config.get('upload', 'MEDIUM_MAX_WIDTH'))
# MEDIUM_MAX_HEIGHT = int(config.get('upload', 'MEDIUM_MAX_HEIGHT'))
# GOOGLE_ANALYTICS_ACCOUNT = config.get('marketing', 'GOOGLE_ANALYTICS_ACCOUNT')
# 
# Path: screenchop/sessions.py
# def requires_auth(f):
#     @wraps(f)
#     def decorated(*args, **kwargs):
#         auth = request.authorization
#         if not "username" in session:
#             return deny_access()
#         return f(*args, **kwargs)
#     return decorated


from flask import Flask
from flask import request
from flask import abort, redirect, url_for, jsonify, session
from flask import render_template
from screenchop.models import *
from screenchop import config
from screenchop.sessions import requires_auth
import json, uuid
    
    # annotate.js will pass 'new' as an id parameter to a newly generated tag.
    # If the tag is new, we create a new tag. If it's not 'new', then atomically
    # update the post with new tag parameters.
    if getUID == 'new':
        # Create Tag in Mongo
        tag = Tag(
                uid=tagUUID,
                top=getTop,
                left=getLeft,
                width=getWidth,
                height=getHeight,
                text=getText,
                postuid=getPostUID,
                postfilename=getPostFilename,
                submitter=session['username']
                )
        tag.save()
    else:
        # Update
        Tag.objects(uid=getUID).update(set__top=getTop,
                                       set__left=getLeft,
                                       set__width=getWidth,
                                       set__height=getHeight,
                                       set__text=getText)

    
    # Returns json response. Though annotate doesn't really care unless exception.
    return jsonify(tags='saved tag')
    

# Path: screenchop/config.py
# HOST = config.get('app', 'HOST')
# PORT = int(config.get('app', 'PORT'))
# DEBUG = config.getboolean('app', 'DEBUG')
# TEMP_FILE_DIR = config.get('app', 'TEMP_FILE_DIR')
# SESSION_KEY = config.get('app', 'SESSION_KEY')
# DOMAIN_URL = config.get('app', 'DOMAIN_URL')
# SHORT_DOMAIN_URL = config.get('app', 'SHORT_DOMAIN_URL')
# ADMIN_EMAIL = config.get('app', 'ADMIN_EMAIL')
# EXCEPTION_EMAIL = config.get('app', 'EXCEPTION_EMAIL').split(',')
# CACHE_TYPE = config.get('caching', 'CACHE_TYPE')
# CACHE_SERVER_ADDRESS = config.get('caching', 'CACHE_SERVER_ADDRESS').split()
# CACHE_DEFAULT_TIMEOUT = config.getint('caching', 'CACHE_DEFAULT_TIMEOUT')
# MONGO_DATABASE = config.get('mongodb', 'DATABASE')
# MONGO_HOST = config.get('mongodb', 'HOST')
# MONGO_PORT = int(config.get('mongodb', 'PORT'))
# MONGO_USER = config.get('mongodb', 'USER')
# MONGO_PASS = config.get('mongodb', 'PASS')
# BUCKET_NAME = config.get('s3', 'BUCKET_NAME')
# AWS_ACCESS_KEY_ID = config.get('s3', 'AWS_ACCESS_KEY_ID')
# AWS_SECRET_ACCESS_KEY = config.get('s3', 'AWS_SECRET_ACCESS_KEY')
# S3_THUMBS_URL = config.get('s3', 'S3_THUMBS_URL')
# S3_MEDIUM_URL = config.get('s3', 'S3_MEDIUM_URL')
# S3_FULL_URL = config.get('s3', 'S3_FULL_URL')
# S3_AVATAR_URL = config.get('s3', 'S3_AVATAR_URL')
# REGISTRATION_LEVEL = config.get('registration', 'REGISTRATION_LEVEL')
# MAX_IMAGES_PER_ROW = int(config.get('gallery', 'MAX_IMAGES_PER_ROW'))
# HOME_MAX_IMAGES = int(config.get('gallery', 'HOME_MAX_IMAGES'))
# TAGGING_ENABLED = config.getboolean('gallery', 'TAGGING_ENABLED')
# ALLOWED_FILE_TYPES = config.get('upload', 'ALLOWED_FILE_TYPES').split(',')
# THUMB_MAX_WIDTH = int(config.get('upload', 'THUMB_MAX_WIDTH'))
# THUMB_MAX_HEIGHT = int(config.get('upload', 'THUMB_MAX_HEIGHT'))
# MEDIUM_MAX_WIDTH = int(config.get('upload', 'MEDIUM_MAX_WIDTH'))
# MEDIUM_MAX_HEIGHT = int(config.get('upload', 'MEDIUM_MAX_HEIGHT'))
# GOOGLE_ANALYTICS_ACCOUNT = config.get('marketing', 'GOOGLE_ANALYTICS_ACCOUNT')
# 
# Path: screenchop/sessions.py
# def requires_auth(f):
#     @wraps(f)
#     def decorated(*args, **kwargs):
#         auth = request.authorization
#         if not "username" in session:
#             return deny_access()
#         return f(*args, **kwargs)
#     return decorated


# Path: screenchop/api/public/tags.py
from flask import Flask
from flask import request
from flask import abort, redirect, url_for, jsonify, session
from flask import render_template
from screenchop.models import *
from screenchop import config
from screenchop.sessions import requires_auth
import json, uuid

    
    # annotate.js will pass 'new' as an id parameter to a newly generated tag.
    # If the tag is new, we create a new tag. If it's not 'new', then atomically
    # update the post with new tag parameters.
    if getUID == 'new':
        # Create Tag in Mongo
        tag = Tag(
                uid=tagUUID,
                top=getTop,
                left=getLeft,
                width=getWidth,
                height=getHeight,
                text=getText,
                postuid=getPostUID,
                postfilename=getPostFilename,
                submitter=session['username']
                )
        tag.save()
    else:
        # Update
        Tag.objects(uid=getUID).update(set__top=getTop,
                                       set__left=getLeft,
                                       set__width=getWidth,
                                       set__height=getHeight,
                                       set__text=getText)

    
    # Returns json response. Though annotate doesn't really care unless exception.
    return jsonify(tags='saved tag')
    

@requires_auth