| @@ -5,6 +5,7 @@ from __future__ import division | ||
| 5 | 5 | import os | 
| 6 | 6 | import random | 
| 7 | 7 |  | 
| 8 | +import records | |
| 8 | 9 | import shortuuid | 
| 9 | 10 | from curtail_uuid import CurtailUUID | 
| 10 | 11 | from django.conf import settings | 
| @@ -34,6 +35,7 @@ from utils.thumbnail_utils import make_thumbnail | ||
| 34 | 35 | from utils.url_utils import img_url, share_url | 
| 35 | 36 |  | 
| 36 | 37 |  | 
| 38 | +db = records.Database(settings.DATABASE_URL['default']) | |
| 37 | 39 | r = settings.REDIS_CACHE | 
| 38 | 40 |  | 
| 39 | 41 |  | 
| @@ -884,45 +886,62 @@ def pai2_home_api(request): | ||
| 884 | 886 |      num = int(request.POST.get('num', settings.PAI2_HOME_PER_PAGE)) | 
| 885 | 887 |  | 
| 886 | 888 | # 执行原生 SQL 语句,获取首页照片列表 | 
| 887 | - cursor = connection.cursor() | |
| 888 | - cursor.execute(PAI2_HOME_API.format( | |
| 889 | + # cursor = connection.cursor() | |
| 890 | + # cursor.execute(PAI2_HOME_API.format( | |
| 891 | + # user_id=user_id, | |
| 892 | + # offset=0, | |
| 893 | + # rows=settings.PAI2_HOME_MAX_ROWS, | |
| 894 | + # )) | |
| 895 | + # rows = cursor.fetchall | |
| 896 | + | |
| 897 | + # 使用 records 执行原生 SQL 语句,获取首页照片列表 | |
| 898 | + rows = db.query(PAI2_HOME_API.format( | |
| 889 | 899 | user_id=user_id, | 
| 890 | 900 | offset=0, | 
| 891 | 901 | rows=settings.PAI2_HOME_MAX_ROWS, | 
| 892 | - )) | |
| 893 | - rows = cursor.fetchall() | |
| 902 | + )).all() | |
| 894 | 903 |  | 
| 895 | 904 | # 首页照片分页 | 
| 896 | 905 | rows, left = pagination(rows, page, num) | 
| 897 | 906 |  | 
| 898 | 907 | # 首页照片信息 | 
| 899 | -    rows = [{ | |
| 900 | - 'group_id': row[0], | |
| 901 | - 'group_name': row[1], | |
| 902 | - 'group_default_avatar': row[2], | |
| 903 | - 'group_avatar': row[3], | |
| 904 | - 'group_from': row[4], | |
| 905 | - 'photo_id': row[5], | |
| 906 | - 'photo_url': img_url(row[6]), | |
| 907 | - 'photo_w': row[7], | |
| 908 | - 'photo_h': row[8], | |
| 909 | - 'photo_thumbnail_url': img_url(row[9]), | |
| 910 | - 'photo_thumbnail_w': row[10], | |
| 911 | - 'photo_thumbnail_h': row[11], | |
| 912 | - 'photo_thumbnail2_url': img_url(row[12]), | |
| 913 | - 'photo_thumbnail2_w': row[13], | |
| 914 | - 'photo_thumbnail2_h': row[14], | |
| 915 | - 'photo_share_url': share_url(row[5]), # Warning: Index of This Line is 5 | |
| 916 | - 'user_id': row[15], | |
| 917 | - 'nickname': row[16], | |
| 918 | - 'avatar': row[17], | |
| 919 | - 'comment_num': row[18], | |
| 920 | - 'thumbup_num': row[19], | |
| 921 | - 'photo_from': row[20], | |
| 922 | - 'created_at': row[21], | |
| 923 | - } for row in rows] | |
| 924 | - | |
| 908 | +    # rows = [{ | |
| 909 | + # 'group_id': row[0], | |
| 910 | + # 'group_name': row[1], | |
| 911 | + # 'group_default_avatar': row[2], | |
| 912 | + # 'group_avatar': row[3], | |
| 913 | + # 'group_from': row[4], | |
| 914 | + # 'photo_id': row[5], | |
| 915 | + # 'photo_url': img_url(row[6]), | |
| 916 | + # 'photo_w': row[7], | |
| 917 | + # 'photo_h': row[8], | |
| 918 | + # 'photo_thumbnail_url': img_url(row[9]), | |
| 919 | + # 'photo_thumbnail_w': row[10], | |
| 920 | + # 'photo_thumbnail_h': row[11], | |
| 921 | + # 'photo_thumbnail2_url': img_url(row[12]), | |
| 922 | + # 'photo_thumbnail2_w': row[13], | |
| 923 | + # 'photo_thumbnail2_h': row[14], | |
| 924 | + # 'photo_share_url': share_url(row[5]), # Warning: Index of This Line is 5 | |
| 925 | + # 'user_id': row[15], | |
| 926 | + # 'nickname': row[16], | |
| 927 | + # 'avatar': row[17], | |
| 928 | + # 'comment_num': row[18], | |
| 929 | + # 'thumbup_num': row[19], | |
| 930 | + # 'photo_from': row[20], | |
| 931 | + # 'created_at': row[21], | |
| 932 | + # } for row in rows] | |
| 933 | + | |
| 934 | +    # [row.update({ | |
| 935 | + # 'thumbup': get_group_photo_thumbup_flag(row['photo_id'], user_id), | |
| 936 | +    #     'porder': get_lensman_order_record(row['photo_id'], user_id) if row['photo_from'] == GroupPhotoInfo.SESSION_GROUP else {} | |
| 937 | + # }) for row in rows] | |
| 938 | + | |
| 939 | + rows = [dict(row) for row in rows] | |
| 925 | 940 |      [row.update({ | 
| 941 | + 'photo_url': img_url(row['photo_path']), | |
| 942 | + 'photo_thumbnail_url': img_url(row['photo_thumbnail_path']), | |
| 943 | + 'photo_thumbnail2_url': img_url(row['photo_thumbnail2_path']), | |
| 944 | + 'photo_share_url': share_url(row['photo_id']), | |
| 926 | 945 | 'thumbup': get_group_photo_thumbup_flag(row['photo_id'], user_id), | 
| 927 | 946 |          'porder': get_lensman_order_record(row['photo_id'], user_id) if row['photo_from'] == GroupPhotoInfo.SESSION_GROUP else {} | 
| 928 | 947 | }) for row in rows] | 
| @@ -961,7 +980,7 @@ def lensman_photo_price(request): | ||
| 961 | 980 | else: | 
| 962 | 981 | # 获取摄影师定价 | 
| 963 | 982 | # TODO, 此处需要完整的摄影师定价 | 
| 964 | - price = 999 if photo_type == 'origin' else 666 | |
| 983 | + price = 999 if photo_type == 'origin' else 299 | |
| 965 | 984 |  | 
| 966 | 985 | r.set(lensman_photo_price_key, price) | 
| 967 | 986 |  | 
| @@ -130,6 +130,31 @@ DATABASES = { | ||
| 130 | 130 | } | 
| 131 | 131 | } | 
| 132 | 132 |  | 
| 133 | +SCHEMES = { | |
| 134 | + 'django.db.backends.postgresql_psycopg2': 'postgres', | |
| 135 | + 'django.db.backends.postgresql_psycopg2': 'postgresql', | |
| 136 | + 'django.db.backends.postgresql_psycopg2': 'pgsql', | |
| 137 | + 'django.contrib.gis.db.backends.postgis': 'postgis', | |
| 138 | + 'django.db.backends.mysql': 'mysql', | |
| 139 | + # 'django.db.backends.mysql': 'mysql2', | |
| 140 | + 'django.contrib.gis.db.backends.mysql': 'mysqlgis', | |
| 141 | + 'mysql.connector.django': 'mysql-connector', | |
| 142 | + 'django.contrib.gis.db.backends.spatialite': 'spatialite', | |
| 143 | + 'django.db.backends.sqlite3': 'sqlite', | |
| 144 | + 'django.db.backends.oracle': 'oracle', | |
| 145 | + 'django.contrib.gis.db.backends.oracle': 'oraclegis', | |
| 146 | +} | |
| 147 | + | |
| 148 | +DATABASE_URL = { | |
| 149 | +    k: '{scheme}://{user}:{password}@{host}:{port}/{name}'.format( | |
| 150 | +        scheme=SCHEMES[v.get('ENGINE', '')], | |
| 151 | +        user=v.get('USER', 'root'), | |
| 152 | +        password=v.get('PASSWORD', ''), | |
| 153 | +        host=v.get('HOST', 'localhost'), | |
| 154 | +        port=v.get('PORT', 6039), | |
| 155 | +        name=v.get('NAME', '') | |
| 156 | + ) for k, v in DATABASES.iteritems() | |
| 157 | +} | |
| 133 | 158 |  | 
| 134 | 159 | # Internationalization | 
| 135 | 160 | # https://docs.djangoproject.com/en/1.8/topics/i18n/ | 
| @@ -15,6 +15,7 @@ kkconst==1.1.2 | ||
| 15 | 15 | pep8==1.6.2 | 
| 16 | 16 | pillow==2.9.0 | 
| 17 | 17 | pytz==2015.7 | 
| 18 | +records==0.4.3 | |
| 18 | 19 | redis==2.10.5 | 
| 19 | 20 | shortuuid==0.4.2 | 
| 20 | 21 | uWSGI==2.0.11.1 | 
| @@ -2,8 +2,8 @@ | ||
| 2 | 2 |  | 
| 3 | 3 | PAI2_HOME_API = ( | 
| 4 | 4 | r"select " | 
| 5 | - r"T1.group_id, T2.group_name, T2.group_default_avatar, T2.group_avatar, T2.group_from, T3.id, T3.photo_path, " | |
| 6 | - r"T3.photo_w, T3.photo_h, T3.photo_thumbnail_path, T3.photo_thumbnail_w, T3.photo_thumbnail_h, " | |
| 5 | + r"T1.group_id, T2.group_name, T2.group_default_avatar, T2.group_avatar, T2.group_from, T3.id as photo_id, " | |
| 6 | + r"T3.photo_path, T3.photo_w, T3.photo_h, T3.photo_thumbnail_path, T3.photo_thumbnail_w, T3.photo_thumbnail_h, " | |
| 7 | 7 | r"T3.photo_thumbnail2_path, T3.photo_thumbnail2_w, T3.photo_thumbnail2_h, T3.user_id, T3.nickname, T3.avatar, " | 
| 8 | 8 | r"T3.comment_num, T3.thumbup_num, T3.photo_from, T3.created_at " | 
| 9 | 9 |      r"from (select * from group_groupuserinfo where user_id='{user_id}' and user_status=1) as T1 " |