# 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/models.py
# class User(Document):
#     userid = SequenceField()
#     username = StringField(required=True, unique=True, max_length=30)
#     password = StringField(required=True, max_length=60)
#     email = EmailField(max_length=60)
#     description = StringField(max_length=200)
#     avatar = StringField(max_length=100)
#     subscriptions = ListField(StringField(max_length=50))
#     following = ListField(StringField(max_length=60))
#     rank = StringField(default='user', max_length=40)
# 
# 
#     meta = {
#         'indexes': ['userid', 'username', 'email']
#         }


from flask import Flask
from flask import request, session, redirect
from screenchop import config
from screenchop.sessions import requires_auth
from screenchop.models import User
#!/usr/bin/env python

'''
subscriptions.py - Controller to subscribe and unsubscribe to tags.

'''




@requires_auth
def subscribe(tag):
    """ Controller for subscribing to tags """
    try:
        User.objects(username=session['username']).update_one(add_to_set__subscriptions=tag)
        return redirect('/tags/%s' % tag)
        
    except:
        return 'fail'


# 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/models.py
# class User(Document):
#     userid = SequenceField()
#     username = StringField(required=True, unique=True, max_length=30)
#     password = StringField(required=True, max_length=60)
#     email = EmailField(max_length=60)
#     description = StringField(max_length=200)
#     avatar = StringField(max_length=100)
#     subscriptions = ListField(StringField(max_length=50))
#     following = ListField(StringField(max_length=60))
#     rank = StringField(default='user', max_length=40)
# 
# 
#     meta = {
#         'indexes': ['userid', 'username', 'email']
#         }


# Path: screenchop/controllers/subscriptions.py
from flask import Flask
from flask import request, session, redirect
from screenchop import config
from screenchop.sessions import requires_auth
from screenchop.models import User

#!/usr/bin/env python

'''
subscriptions.py - Controller to subscribe and unsubscribe to tags.

'''




@requires_auth
def subscribe(tag):
    """ Controller for subscribing to tags """
    try:
        User.objects(username=session['username']).update_one(add_to_set__subscriptions=tag)
        return redirect('/tags/%s' % tag)
        
    except:
        return 'fail'


@requires_auth